1、寻找文件时,CFileFind类的使用。

2、寻找目录时使用BROWSEINFO,其中包含了用户选中目录的重要信息。

3、LPITEMIDLIST类

4、目录选择对话框的使用SHBrowseForFolder配合BROWSEINFO结构体,使用方法如下:

http://baike.baidu.com/link?url=62Gqm5c5HMz5T2Hw4WD6hEKJk3mtkgOyTzyreHBPdgya6x04Hwm02Vdof0LhjYG7KlISUyK1N8RT7JGSQn5bXq#2 百度百科

5、一定要得对变量初始化,例如char buf[255] = {0};否则可能会出现字符串无效

6、类型转换,往往项目设置使用UNICODE时,但是C++中有些函数使用的却是char*的类型,这样,类型转换非常麻烦,LPSTR被定义成是一个指向以NULL(‘\0’)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针

SOCKET编程:

使用socket时的注意事项
使用socket时,有几个必须注意的地方。
那是include文件和库的指定,及socket库的初始化。

include文件和库
include文件是、库是ws2_32.lib

socket库的初始化
使用socket关联的函数前,执行下面的初始化的操作是必要的。
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData[1];
if(WSAStartup(wVersionRequested,wsaData)){
printf("socket库的初始化失败。");
exit(1);
}

7、对于所有的函数都要通过其返回值来判断其是否执行正确。如果不正确要对错误情况进行处理。

8、关于字符,除特别指明需要char的,字符均定义为TCHAR,使用CString类时需要初始化。另外尽量使用STL中的string来操作字符串。

9、变量在用到处声明,定义之后一定要做初始化。

10、公共使用的函数可以作为全局函数,添加全局函数一般放在app中,声明在app的.h文件中,定义在app的.cpp文件中,因为app的.h文件是所有文件都要包含的。

11、要养成写规范代码的习惯,变量的命名需要注意,还有*、&符号紧跟变量。

12、对于重复出现的代码,要将其提炼出来形成函数,尽量不要让代码中存在重复的代码段。

13、对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

14、
//记录软件异常信息
void ErrorLog(LPCTSTR szMsg)
{
try
{
TCHAR szPath[MAX_PATH] = {'\0'};

if (!::GetModuleFileName(NULL, szPath, MAX_PATH))
{
return;
}

::PathRemoveFileSpec(szPath);

TCHAR fileName[MAX_PATH] = {0};
StringCchPrintf(fileName, _countof(fileName), _T("%s\\Error.log"), szPath);

CTime tm = CTime::GetCurrentTime();

TCHAR szBuffer[1024] = {0};
StringCchPrintf(szBuffer, _countof(szBuffer), _T("%d年%d月%d日%d:%d:%d:%s \n"), tm.GetYear(),
tm.GetMonth(),
tm.GetDay(),
tm.GetHour(),
tm.GetMinute(),
tm.GetSecond(),
szMsg);

CFileStatus status;
CStdioFile stFile;
BOOL bOpen;

if (!CFile::GetStatus(fileName,status))
{
bOpen = stFile.Open(fileName, CFile::modeCreate |CFile::modeWrite);
}
else
{
bOpen = stFile.Open(fileName, CFile::modeWrite);
}

if (bOpen)
{
stFile.SeekToEnd();

char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );

setlocale( LC_CTYPE, "chs" );

stFile.WriteString(szBuffer);

setlocale( LC_CTYPE, old_locale );

free( old_locale );//还原区域设定

stFile.Close();
}
}
catch(...)
{
}
}

15、获取当前执行程序的路径,GetModuleFileName();和GetCurrentDirectory();

GetBuffer和ReleaseBuffer是一套需要配合使用的函数,与GetBufferLength相比,优点是如果分配的空间大于实际保存的字符串,ReleaseBuffer会把多余申请的空间释放掉,归还给系统。
GetBufferSetLength很好理解,就是申请指定长度的空间。

16、C++对象的创建有以下4种方式: http://blog.csdn.net/my_mao/article/details/22863247

Class A
{
...
};
A a0; 调用默认的无参构造函数
A a1(1); 隐式调用带有一个参数的构造函数
A a2 = A(2); 显式调用一个参数的构造函数
A *a3 = new A(3); 动态分配

17、字节顺序转换函数
htons:将一个u_short类型的端口从主机字节顺序转换为网络字节顺序
ntohs:将一个u_short类型的端口从网络字节顺序转换为主机字节顺序

htonl:将一个u_long类型的IP地址从主机字节顺序转换为网络字节顺序
ntohl:将一个u_long类型的IP地址从网络字节顺序转换为主机字节顺序

inet_addr:将一个字符串IP转换为以网络字节顺序排列的的IP地址
inet_ntoa:将一个以网络字节顺序排列的IP地址转换为一个字符串IP

18、
爱MFC、爱MSDN。
爱面向对象,爱属性和方法,最爱自己的名字后面有个加加。
爱自己苦思冥想,也爱和众生分享。
我不是无所不能的百科全书,也不是10块钱一本的如来神掌,我是Visual C++编程之道。
别拿我和其他书相比,我和他们不一样。

19、
C++中的函数指针
函数指针的定义方法如下:
返回类型 (*指针名)(形参类型 形参名, ...);
p表示一个函数指针,它指向接受一个int型形参的函数,这个函数的返回类型为int .
这里要注意的是它不能写成 int *p(int x),这时p不再是函数指针,而是一个函数名,它接受int类型形参,返回类型为指向int类型的指针

指针数组
char* p[MAXNUM];

20、Unix下网络编程和Windows下网路编程的区别
Unix下有五种I/O 模型
阻塞I/O模型
非阻塞I/O模型
I/O复用(select和poll)
信号驱动I/Open
异步I/O
Windows支持的各种Socket I/O模型
select 模型
WSAAsyncSelect模型
WSAEventSelect模型
OverLapped I/O事件通知模型
OverLapped I/O完成例程模型
IOCP模型

21、MFC中控件变量和控件值变量的区别,控件变量不需要使用Update(),Update()是和控件值变量结合使用的。

22、WSA开头的函数是Window Socket API的缩写,都是API函数。WIN95以后的Window版本都支持winsock2.2,但是Window CE只支持winsock1.1,区分两个版本很简单,WinSock2.2的函数都以WSA开头,除了WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError这几个函数也出现在1.1版本中。

23、以Afx开头的函数被成为Afx框架函数,它们都是调用系统API函数实现的。

24、发送自定义的消息有两个方法:SendMessage()、PostMessage()

它们的区别是,SendMessage直接将消息发送给消息响应函数,消息响应函数处理之后,sendMessage()才返回。

PostMessage()是把消息放到消息队列中,之后PostMessage就返回了。

25、消息映射,消息使用ON_MESSAGE宏实现,命令消息使用OM_COMMAND宏实现。

26、UpdateData(BOOL bFlag);的用法,此函数是用来刷新数据的,当参数为TRUE是表示将数据从控件刷新到对应变量中,为FALSE表示将数据从变量刷新到对应控件上。

VC++ 知识点的更多相关文章

  1. VC++知识点整理

    1.内联函数        定义:定义在类体内的成员函数,即函数的函数体放在类体内        特点:在调用处用内联函数体的代码来替换,用于解决程序的运行效率问题.一定要在调用之前定义,并且内联函数 ...

  2. iOS开发零碎知识点

    记录一些常用和不常用的iOS知识点,防止遗忘丢失.(来源为收集自己项目中用到的或者整理看到博客中的知识点),如有错误,欢迎大家批评指正:如有好的知识点,也欢迎大家联系我,添加上去.谢谢! 一.调用代码 ...

  3. VC++动态链接库(DLL)编程深入浅出(zz)

    VC++动态链接库(DLL)编程深入浅出(zz) 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用 ...

  4. 内外分离接口依赖及UIScrollView知识点

    1:Class Extension 还能巧妙的解决一个接口暴露问题 有些属性或者方法对外可以提供,有些只针对内部的类进行调用: // Sark.framework/Sark.h @interface ...

  5. [BS] 小知识点总结-05

    [BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...

  6. android 小知识点

    小知识点总结 1. android中MotionEvent.ACTION_CANCEL事件如何被触发? 对于这个问题,android文档的说明很简短,想看明白很难.国外一网页说的还比较详细,写在这里分 ...

  7. iOS开发——实战总结OC篇&网易彩票开发知识点总结

    网易彩票开发知识点总结 关于网易彩票开发中遇到了不少的坑,弄了好久才弄懂,或者有些犹豫很久没用就不记得了,所以这里就总结了一下,希望以后不会忘记,就算忘记也能快速查看! /************** ...

  8. VC++制作DLL详解

    1.    DLL的基本概念 应用程序(exe)要引用目标代码(.obj)外部的函数时,有两种实现途径——静态链接和动态链接. 1.    静态链接 链接程序搜索对应的库文件(.lib),然后将这个对 ...

  9. VC++制作DLL具体解释

    1.    DLL的基本概念 应用程序(exe)要引用目标代码(.obj)外部的函数时,有两种实现途径--静态链接和动态链接. 1.    静态链接 链接程序搜索相应的库文件(.lib),然后将这个对 ...

随机推荐

  1. $ionicModal

    Ionic中[弹出式窗口]有两种(如下图所示),$ionicModal和$ionicPopup; $ionicModal是完整的页面: $ionicPopup是(Dialog)对话框样式的,直接用Ja ...

  2. 优化iOS程序性能的25个方法

    1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自己主动引用计数)和iOS5一起公布.它避免了最常见的也就是常常是因为我们忘记释放内存所造成的内存泄露.它自己 ...

  3. 修复windows Management Instrumentation(WMI)

    第一步.重建repository文件夹下所有文件,打开“开始”“运行”输入一下命令并回车:1.停止 WMI 服务, net stop winmgmt2.删除repository文件夹下所有文件, %w ...

  4. git的color configura

    git color的配置 Git多颜色输出 Git默认的输出是单一颜色的,不仅不够美观,也不容易阅读.实际上,Git本身就支持用多种颜色来显示其输出的信息,只需在命令行中运行以下命令来修改git的设置 ...

  5. C# 的Timer 在javascript中的实现--基于Typescript

    class Timer { //js 内置的timer对象 private _jsInnerTimerObj: any; private _enable: boolean; private _hand ...

  6. Start-Sleep 帮助信息

    如下说明是翻译: help Start-Sleep 产生的帮助信息.译者: Edengundam(马涛) Start-Sleep 大纲使shell, 脚本, 或运行空间的活动挂起指定的时间. 语法St ...

  7. 微信小程序条码、二维码生成模块

    代码地址如下:http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  8. 导出CCS3.3数据及使用matlab处理的方法

    CCS3.3是一款DSP的集成开发环境(IDE).在做DSP开发时,为验证算法.经常须要使用matlab进行算法验证,验证算法就须要数据.因此,一种交互的方法是: 使用DSP开发板连接CCS 用CCS ...

  9. 使用nginx生成缩略图

    nginx中可以使用 --with-http_image_filter_module 这个模块,今天发现在github上发现国人开发的一款模块 模块同时支持 Nginx 和 tengine 本ngin ...

  10. nyoj-----前缀式计算

    前缀式计算 时间限制:1000 ms  |           内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀 ...