1. _MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接)
MS VC++ 10.0 _MSC_VER = 1600
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
MicroSoft C++ Version,#pragma预编译指令应该是在这个值大于1000的时候才出现的,所以现在的vs2008之后貌似都不用再判断这个值了。
2.#if !defined(AFX_DLGCALC_H__F42970C4_9047_11D2_8E53_006008A82731__INCLUDED_)
#define
AFX_DLGCALC_H__F42970C4_9047_11D2_8E53_006008A82731__INCLUDED_
这是vc6及更低版本的防止同个头文件,被重复include之后,被重复编译的一贯做法。
在vs2003及更高版本,可以用 #pragma once 来替代类似的功能。
3.UNICODE _UNICODE __T _T __TEXT _TEXT L TEXT宏
http://www.cnblogs.com/ini_always/archive/2011/05/20/2050517.html
4.宏有时候可以作开关,需要时候打开,不需要时候关闭
http://www.cnblogs.com/zxl2431/archive/2011/04/10/2011298.html
http://zhidao.baidu.com/question/70159182.html
5.MFC给你生成的cpp文件里面都有这么几行:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
http://hi.baidu.com/zsb517/blog/item/418a5d88b511f8a40f2444c4.html
6.宏定义中 \表示换行,下一行连接上一行 ##表示字符串连接
7.#ifndef __AFXWIN_H__
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif
如果没有定义__AFXWIN_H__,编译时就报错“error :include 'stdafx.h' before including this file for PCH”,也就是说,如果使用了
预编译头文件,则通常最先包含'stdafx.h' 文件。
8.MFC常用宏的分类及其作用与用法
http://web.tsmc.edu.cn/xxkx/it/2/jss_2_c_00009.html
9.DDX_***()
TEXT:DDX_TEXT()可以把控件上的文本信息和类的成员变量关联起来,调用DoDataExchange(pDX)就完成了数据的Exchange可以通过UpdaeData()
这个函数来实现数据的更新。
Control:绑定控件与控制变量,以实现界面与内存数据双向的传输。从而实现调用UpdateData()函数后能够将数据在控件与控件对象之间进行
传递.
如果你为控件分配了变量
UpdateData(true):是使用户输入的数据能够反映到变量上,在函数调用之后变量才被赋值.把控件的值传给对应的变量.
UpdateData(false) :是当你给控件对应的变量赋过值之后,在控件上体现出来,在函数调用之前,控件的值是不会随变量变化的.把变量的值传递
给控件。
UpdateData()相当于是UpdateData(true)
http://topic.csdn.net/t/20041222/23/3668557.html
10.WINVER:头文件中会通过该宏来判定操作系统版本,某些接口不支持低版本系统,但有些函数实际上是支持低版本系统的(只是不推荐在低版本系统
中使用),因此通过自己重新定义WINVER可以使得这些函数得到支持指定程序编译运行的最低windows系统的版本号,宏定义的值对应了相应的操作
系统。可以根据具体情况修改该值(需要时候到网上查即可)。
_WIN32_WINNT:用来让编译器知道你的操作系统是哪个版本的,因为有些API函数,早期的Windows版本不支持,当值大于等于0x0500表示是Windows
2000或以上版本。
_WIN32_WINDOWS:也是用来标注程序编译运行所需要的最低系统版本号,同_WIN32_WINNT一样,是由于只用WNVER参数标注不明是哪个版本的操作系
统而定义的。
http://wxxweb.blog.163.com/blog/static/1351269002010210955129/
_WIN32_IE:定义了程序编译运行所需要的最低IE版本号,有时候操作系统版本号定义太老的时候可能发生冲突,这时候可以到网上查找对应的版本
号的值和需要的操作系统的版本号。
http://hi.baidu.com/hust_junejun/blog/item/d86557a3cd49f8a6caefd0f9.html
http://blog.sina.com.cn/s/blog_4dfc39d10100sz7n.html
11.#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
定义了程序运行后,所显示皮肤的风格,可以到网上查找
12.#import
http://chuiwenchiu.wordpress.com/2006/01/04/c-import-%E6%8C%87%E4%BB%A4/
http://blog.sina.com.cn/s/blog_436fe8b10100mtvp.html
13.__FILE__ 显示文件名 __LINE__显示代码所在的行数 ASSERT断言宏