您的位置:首页 > 编程语言 > C语言/C++

常见的MFC C++中的宏和预编译指令

2011-09-04 16:01 267 查看
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宏

/article/5111513.html

4.宏有时候可以作开关,需要时候打开,不需要时候关闭

/article/6006377.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断言宏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: