友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第87章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






               MFC 针对上述这些机能,准备了一些宏,让程序能够很方便地继承并实作出上述四大 



               机能。这些宏包括: 



               宏名称                             提供机能                    出现章节 



               DECLARE_DYNAMIC          执行时期类别信息            第3章、第8章 



               IMPLEMENT_DYNAMIC        执行时期类别信息            第3章、第8章 



               DECLARE_DYNCREATE        动态生成                    第3章、第8章 



               IMPLEMENT_DYNCREATE      动态生成                    第3章、第8章 



               DECLARE_SERIAL            对象内容的文件读写          第3章、第8章 



               IMPLEMENT_SERIAL          对象内容的文件读写          第3章、第8章 



               DECLARE_OLECREATE OLE     对象的动态生成             不在本书范围之内 



               IMPLEMENT_OLECREATE OLE   对象的动态生成             不在本书范围之内 



336 


…………………………………………………………Page 399……………………………………………………………

                                           第5章    總觀Application Framework  



我也已经在第3章提过MFC  的消息映射(Message Mapping)与命令绕行(mand 



Routing)两个特性。这两个性质系由以下这些MFC 宏完成: 



宏名称                           提供机能                      出现章节 



DECLARE_MESSAGE_MAP           声明消息映射表数据结构         第3章、第9章 



BEGIN_MESSAGE_MAP          开始消息映射表的建置           第3章、第9章 



ON_MAND                    增加消息映射表中的项目         第3章、第9章 



ON_CONTROL                                     增加消息映射表中的项目         本书未举例 



ON_MESSAGE                   增加消息映射表中的项目         ??? 



ON_OLECMD                     增加消息映射表中的项目         本书未举例 



ON_REGISTERED_MESSAGE       增加消息映射表中的项目         本书未举例 



ON_REGISTERED_THREAD_       增加消息映射表中的项目         本书未举例 



MESSAGE 



ON_THREAD_MESSAGE          增加消息映射表中的项目         本书未举例 



ON_UPDATE_MAND_UI        增加消息映射表中的项目         第3章、第9章 



END_MESSAGE_MAP                    结束消息映射表的建置           第3章、第9章 



事实上,与其它MFC Programming 书籍相比较,本书最大的一个特色就是,要把上述 



这些MFC 宏的来龙去脉交待得非常清楚。我认为这对于撰写MFC 程序是非常重要 



的一件事。 



                                                                           337 


…………………………………………………………Page 400……………………………………………………………

                  第篇    湷觥 FC  程式設計 



            MFC 数据类型 (data types) 



                   下面所列的这些数据类型,常常出现在MFC 之中。其中的绝大部份都和一般的Win32 



                   程序(SDK 程序)所用的相同。 



                   下面这些是和Win32 程序(SDK 程序)共同使用的数据类型: 



                   数据类型                       意义 



                   BOOL            Boolean 值(布尔值,不是TRUE 就是FALSE ) 



                   BSTR            32…bit 字符指针 



                   BYTE            8…bit 整数,未带正负号 



                   COLORREF  32…bit 数值,代表一个颜色值 



                   DWORD        32…bit 整数,未带正负号 



                   LONG           32…bit 整数,带正负号 



                   LPARAM      32…bit 数值,做为窗口函数或callback  函数的一个参数 



                   LPCSTR        32…bit 指针,指向一个常数字符串 



                   LPSTR          32…bit 指针,指向一个字符串 



                   LPCTSTR     32…bit 指针,指向一个常数字符串。此字符串可移植到Unicode 和DBCS  (双 



                               字节字集) 



                   LPTSTR        32…bit 指针,指向一个字符串。此字符串可移植到Unicode 和DBCS  (双位 



                               组字集) 



                   LPVOID        32…bit 指针,指向一个未指定类型的资料 



                   LPRESULT     32…bit 数值,做为窗口函数或callback  函数的回返值 



                   UINT        在Win16  中是一个16…bit 未带正负号整数,在Win32  中是一个32…bit 



                                未带正负号整数。 



                   WNDPROC    32…bit 指针,指向一个窗口函数 



                   WORD            16…bit 整数,未带正负号 



                   WPARAM    窗口函数的callback  函数的一个参数。在Win16  中是16 bits,在Win32 



                                中是32 bits 。 



338 


…………………………………………………………Page 401……………………………………………………………

                                                   第5章    總觀Application Framework  



 下面这些是MFC 独特的数据类型: 



 数据类型                                        意义 



 POSITION    一个数值,代表collection 对象(例如数组或串行)中的元素位置。常使用 



             于MFC collection classes 。 



 LPCRECT    32…bit 指针,指向一个不变的RECT 结构。 



 前面所说那些MFC 数据类型与C++ 语言数据类型之间的对应,定义于WINDEF。H 



 中。我列出其中一部份,并且将不符合(_MSC_VER 》= 800) 条件式的部份略去。 



#define NULL    0 



#define far                //侯俊杰注:Win32 不再有far 或near memory model, 

#define near               // 而是使用所谓的flat model。pascall 函数调用习惯 

#define pascal __stdcall  //也被stdcall 函数调用习惯取而代之。 



#define cdecl _cdecl 

#define CDECL _cdecl 

                                                                                    、 



#define CALLBACK      __stdcall  // 侯俊杰注:在Windows programming 演化过程中 

#define WINAPI       __stdcall  // 曾经出现的PASCAL、CALLBACK、WINAPI 

#define WINAPIV      __cdecl    // 

                                    APIENTRY,现在都代表相同的意义,就是stdcall 

#define APIENTRY     WINAPI     // 函数调用习惯。 

#define APIPRIVATE  __stdcall 

#define PASCAL       __stdcall 



#define FAR          far 

#define NEAR         near 

#define CONST        const 



typedef unsigned long             DWORD; 

typedef int                       BOOL; 

typedef unsigned char             BYTE; 

typedef unsigned short            WORD; 

typedef float                     FLOAT; 

typedef FLOAT                     *PFLOAT; 

typedef BOOL near                 *PBOOL; 

typedef BOOL far                  *LPBOOL; 

typedef BYTE near                 *PBYTE; 

typedef BYTE far                  *LPBYTE; 



                                                                                        339 


…………………………………………………………Page 402……………………………………………………………

                   第篇    湷觥 FC  程式設計 



                   typedef int near           *PINT; 

                   typedef int far            *LPINT; 

                   typedef WORD near           *PWORD; 

                   typedef WORD far           *LPWORD; 

                   typedef long far           *LPLONG; 

                   typedef DWORD near         *PDWORD; 

                   typedef DWORD far          *LPDWORD; 

                   typedef void far           *LPVOID; 

                   typedef CONST void far    *LPCVOID; 



                   typedef int                INT; 

                   typedef unsigned int        UINT; 

                   typedef unsigned int      *PUINT; 



                    /* Types use for passing & returning polymorphic values */ 

                   typedef UINT WPARAM; 

                   typedef LONG LPARAM; 

                   typedef LONG LRESULT; 



                   typedef DWORD   COLORREF; 

                   typedef DWORD   *LPCOLORREF; 



                   typedef struct tagRECT 

                    { 

                       LONG    left; 

                       LONG    top; 

                       LONG    right; 

                       LONG    bottom; 

                    } RECT; *PRECT; NEAR *NPRECT; FAR *LPRECT; 



                   typedef const RECT FAR* LPCRECT; 



                   typedef struct tagPOINT 

                    { 

                       LONG  x; 

                       L
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!