看流星社区

 找回密码
 注册账号
查看: 1675|回复: 0

VC++小结

[复制链接]

该用户从未签到

发表于 2014-5-21 10:24:32 | 显示全部楼层 |阅读模式
1、非0值表示真(TRUE),0值为假(FALSE);

2、STL与MFC

  c++是语言,语言本身功能是很有限的,需要一些类库把常用的操作封装起来,以后可以直接调用,节省大量精力.STL和MFC都是一个扩充C++语言功能的类库.

  stl是底层类库,提供的是一般编程都会用到的功能,主要是一套容器,和一套相关的算法.常用的数据结构,比如list, queue, stack, map等等,都在stl里面给你实现好了,直接用就是了.

  MFC是高层库(相对于stl而言),它封装的是WIN32API函数,把上千个复杂的API函数封装起来,并通过自己独特的消息处理机制来方便原生windows程序的开发.MFC比stl的应用范围窄,只有在开发原生windows程序时才会用到.

3、对话框捕获按键消息

(1)可以在对话框类中重载虚函数PreTranslateMessage(个人认为较好,当然应用程序类中重载也可以);

(2)在应用程序类中重载虚函数ProcessMessageFilter(实现较麻烦见孙鑫第8章最后,还需在对话框类中添加代码,好处待考证);

4、如果希望把某个数值限定在某个范围,最好的办法是取模运算,例如index = ++index%3;

5、自定义消息

(1)使用WM_USER防止自定义消息ID与系统消息ID冲突,小于它的系统保留,大于它的可被用户使用,如#define UM_PROGRESS WM_USER+1(不能超过0x7FFFF);

(2)消息响应函数原型afx_msg LRESULT OnProgress(WPARAM wParam,LPARAM lParam),声明不能用void,而且不管需不需要,都要带上参数;

(3)使用ON_MESSAGE宏,例如ON_MESSSAGE(UM_PORGRESS,CMainFrame::OnProgress),CMainFrame是所在类的类名,这里是框架类;

(4)cpp文件中定义函数时,可以随便一个返回值,如return TRUE;

(5)SendMessage(MSG)用于发送消息,等待MSG消息执行完毕才会返回,执行自身所属消息;

(6)PostMessage(MSG)则是用于将消息到消息队列,然后立即返回,不必等待执行完毕,本身所在消息执行完才会执行MDG消息;

6、resource.h与.rc文件---自己定义的菜单、对话框等资源都在.rc文件中,而资源的ID的声明在resource.h中,可以认为是.rc的头文件之一;

7、窄字符与宽字符---对于字面值如"aa",可以使用L或_T来转换,变量则使用头文件atlconv.h下的A2W或W2A,需在使用代码前写一个USES_CONVERSION宏(不要将该宏写在循环的函数内部);

8、文件的写入和读取方式要保持一致,对文件的读写最好统一使用二进制方式,以文本方式写入数据时,遇到“换行”符(ASCII码为10),会转换为“回车 换行”(ASCII码为13和10),读取文件则与写入是相反转换,二进制方式写入文件原样输出,写入10后记事本打开就会变成小黑点,以文本方式读取就显示为换行符;

9、ASCII码显示转换---文本方式打开文件时,文件中的每一个字节都会转换成对应的ASCII字符显示,在VS中以二进制打开文件后是以十六进制来显示每个字节的,如图,左边的61 33 34 31即是右边a341的十六进制显示,每个数代表一个字节:
00000000  61 33 34 31      a341

10、文件对话框类---文件过滤器格式如:"Text Files(*.txt)\0*.txt"为一项,每一项之间用\0隔开,最后一个过滤器末尾加两个\0;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-30 04:16

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表