【MFC学习笔记2】MFC中的数据类型,全局变量,全局函数和宏。

 1、MFC中的数据类型:
 BYTE、WORD、DWORD分别为8位,16位,32位无符号整型;
 LONG为32位有符号整型,UINT为32位无符号整型;
 BOOL、BSTR为32位字符指针;
 LPCSTR、LPSTR分别为字符串常量、变量的32位指针;
 LPCTSTR、LPTSTR分别为用于Unicode和DBCS的字符串常量、变量
的32位指针;
 LPCRECT为一个指向RECT结构体常量的32位指针;
 LPVOID为未指定类型的指针。
 LPARAM、LRESULT分别作为传给Windows过程的参数和从Windows
过程返回的结果的32位值。
 WPARAM也是作为传给Windows过程的参数的值,但可以是16位
(Windows3.1)或32位(Win32)的。
 WINDPROC为指向Windows过程的指针。
2、全局变量:
 MFC中的全局变量都已afx为前缀,主要有两类,一类是用于全局应用程序对象的,有afxCurrentAppName、afxCurrentWinApp、
afxCurrentInstanceHandle、afxCurrentResourceHandle等4个,分别用于
保存全局应用程序对象的名字、指针、当前实例句柄、当前资源句柄。
另一类是用于诊断信息的,有afxDump、afxMemDF、afxTraceEnabled、
afxTraceFlags、afxCheckError等5个,分别用于发出CDumpContext信息
给调试窗口、控制调试时内存分配器的行为、控制宏TRACE的输出、打开
MFC内建的报告特征、测试错误情况。
3、全局函数:
 MFC类库定义的全局变量函数主要有5类,包括用于全局应用程序
对象的、用于诊断信息的、用于集合类的、用于引发异常类的、用于字符串
格式化和消息框显示的函数。
 (1) 用于全局应用程序对象全局函数
 afxGetAppName、afxGetApp、afxGetInstanceHandle、
afxGetResourceHandle、afxGetMainWnd分别用于获取全局应用程序对象的
名字、指针、当前实例句柄、默认资源句柄、当前主窗口。
 afxInitRichEdit、afxSocketInit、afxWinInit分别用于对RichEdit控件、WindowsSocket、控制台应用程序的初始化。
 afxRegisterWndClass用于对一个用户窗口进行注册、并补充到
MFC自动注册的窗口类中;afxRegisterClass用于在DLL中注册一个窗口类。
 afxBeginThread、afxEndThread分别用于创建一个新线程、结束当
前线程;afxGetThread用于获得指向当前线程对象的指针。
 (2) 用于诊断信息的全局函数
 afxCheckMemory、afxEnableMemoryTracking、afxIsMemoryBlock
、afxIsValidAddress分别用于检查当前所有已分配内存的完整性、打开/
关闭内存跟踪、检验内存块是否合理分配、检验内存地址范围是否在程序
的界定内。
 afxDump用于转储一个对象的状态;afxDumpStack用于生成当前堆
栈的映像;afxIsValidString用于确定一个字符指针是否有效;
AfxSetAllocHook用于设置一个每当内存分配时调用的函数。
 (3) 用于集合类的全局函数
 CompareElements和CopyElements分别用于元素的比较和复制;
ConstructElements和DestructElements用于当一个元素被构造或被销毁时
完成任意所需的动作;HashKey用于计算一个哈希关键值;
SerializeElements用于把元素保存到一个档案中或从一个档案中恢复元素。
 (4) 用于引发异常的全局函数
 afxThrowArchiveException、afxThrowFileException、
afxThrowMemoryException、afxThrowNotSupportedException、
afxThrowResourceException、afxThrowUserException分别用于引发一个
档案异常、文件异常、内存异常、不支持异常、Windows资源没找到异常、
用户程序初始化异常。
 afxThrowOleException和afxThrowOleDispatchException分别用于
引发一个OLE异常和OLE自动化异常。
 afxThrowDAOException和afxThrowDBException分别用于引发一个
DAO数据库异常和DB数据库异常。
 afxAbort用于当产生文件分配表错误时终止应用程序执行。
 (5) 用于字符串格式化和消息框显示的全局函数
 afxFormatString1和afxFormatString2分别用于替换字符串表中的
一个字符串和两个字符串;afxMessageBox用于显示一个消息框。
4、预定义宏
 MFC预定义宏包括消息映射宏、运行时对象模型服务宏、诊断宏、
异常宏。
 (1) 消息映射宏
 可以接收消息和命令的所有CCmdTarget派生类都有自己的消息映射。框架利用消息映射把消息和命令与它们的处理函数链接起来。
 每个命令目标类的消息映射都由一组定义的宏组成,成为消息映射
宏。其中,宏BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()用于将消息映射括起
来,其他宏(如 ON_COMMAND)则包含有消息映射的内容,宏的格式依据消息类型而定。
 (2) 运行时对象模型服务宏
 运行时对象模型服务宏分为3个层次,DECLARE_DYNAMIC用于支持运
行时获取类信息;DECLARE_DYNCREATE用于支持运行时动态创建并获取类信
息;DECLARE_SERIAL用于支持运行时数据序列化、动态创建并获取类信息。
这3个宏用在类声明中(.h文件)。
 (3) 诊断宏
 ASSERT宏用于当一个指定的表达式值为FALSE时打印一个消息,然
“流产”该程序;
 (4) 异常宏
发布了17 篇原创文章 · 获赞 10 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/markinstephen/article/details/2976570
今日推荐