手写MFC---第三节DECLARE_MESSAGE_MAP()

原创 2004年07月11日 21:43:00

首先看定义

#define DECLARE_MESSAGE_MAP() /

private: /

         static const AFX_MSGMAP_ENTRY _messageEntries[]; /

protected: /

         static AFX_DATA const AFX_MSGMAP messageMap; /

         virtual const AFX_MSGMAP* GetMessageMap() const; /

 

AFX_MSGMAP_ENTRY是一个结构

struct AFX_MSGMAP_ENTRY

{

         UINT nMessage;   // windows message

        UINT nCode;      // control code or WM_NOTIFY code

         UINT nID;        // control ID (or 0 for windows messages)

         UINT nLastID;    // used for entries specifying a range of control id's

         UINT nSig;       // signature type (action) or pointer to message #

         AFX_PMSG pfn;    // routine to call (or special value)

};

AFX_DATA的定义

#define AFX_CORE_DATA

#define AFX_DATA AFX_CORE_DATA

 

AFX_MSGMAP也是一个结构体

struct AFX_MSGMAP

{

#ifdef _AFXDLL

         const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();

#else

         const AFX_MSGMAP* pBaseMap;

#endif

         const AFX_MSGMAP_ENTRY* lpEntries;

};

 

我们看一下,在第三行中

static const AFX_MSGMAP_ENTRY _messageEntries[];

定义了一个静态 常量  AFX_MSGMAP_ENTRY结构 名字为_messageEntries的数组

为什么?没有大小

从语法上讲,声明一个静态变量是可以的,就象:

#include <iostream.h>

class A

{

public :

    static const int arrData[];

};

const int A::arrData[] = {1,2,3,4,5};

void main()

{

         cout<<A::arrData [3];

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

手写MFC---第三节DECLARE_MESSAGE_MAP()

首先看定义#define DECLARE_MESSAGE_MAP() /private: /         static const AFX_MSGMAP_ENTRY _messageEntries...
  • xingshuqiang2009
  • xingshuqiang2009
  • 2011年01月24日 21:59
  • 123

VC类中DECLARE_MESSAGE_MAP()有什么含义

DECLARE_MESSAGE_MAP()宏的作用是向类中添加消息映射必要的结构体和函数声明,只需要添加一次,放在什么位置并不重要,就如同类里其他普通函数的声明可以相互交换顺序一样。 函数的修饰符也是...
  • sunstars2009918
  • sunstars2009918
  • 2011年12月07日 07:34
  • 5073

《Thinking in JAVA》读书笔记_第一章_1.2~1.3

1.2 每个对象都有一个接口 为何说没个对象都有一个接口?那就要从这个接口的定义上来说。在《TIJ》中所给出的解释是,接口确定了对某一特定对象所能发出的请求。 由之前的学习,我们可以认识到。对象是某个...
  • dy13145687
  • dy13145687
  • 2015年04月25日 16:08
  • 307

DECLARE_MESSAGE_MAP( )

MFC Library Reference  DECLARE_MESSAGE_MAP   Declares that the class defines a message map. Each CCm...
  • johnny_de
  • johnny_de
  • 2009年06月17日 09:55
  • 446

DECLARE_MESSAGE_MAP()

 在一些资料上,有这么一段文字: DECLARE_MESSAGE_MAP() 说明: 用户程序中的每个CCmdTarget派生类必须提供消息映射以处理消息。在类定义的末尾使用DECLARE_MESSA...
  • z0007202
  • z0007202
  • 2009年11月10日 14:46
  • 303

mfc DECLARE_MESSAGE_MAP

转载自:http://www.cppblog.com/citywanderer/articles/8660.htmlhttp://www.cppblog.com/citywanderer/articl...
  • tangyanzhi1111
  • tangyanzhi1111
  • 2013年08月20日 14:12
  • 2417

DECLARE_MESSAGE_MAP()

DECLARE_MESSAGE_MAP() 说明: 用户程序中的每个CCmdTarget派生类必须提供消息映射以处理消息。在类定义的末尾使用DECLARE_MESSAGE_MAP宏。接着,在定义类成员...
  • feidongyizhong
  • feidongyizhong
  • 2011年04月15日 15:16
  • 147

DECLARE_MESSAGE_MAP

 Declares that the class defines a message map. Each CCmdTarget-derived class in your progr...
  • u014023993
  • u014023993
  • 2014年04月14日 19:50
  • 519

3、一个简单的Windows下的socket程序

上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。同样,server.cpp 为服务器端代码,client 为客户端代码。 服务器端代码 se...
  • Const_Gong
  • Const_Gong
  • 2017年05月21日 13:50
  • 139

DECLARE_MESSAGE_MAP( )用法

DECLARE_MESSAGE_MAP( )  说明:  你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAG...
  • lidandan2016
  • lidandan2016
  • 2017年05月19日 16:05
  • 77
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手写MFC---第三节DECLARE_MESSAGE_MAP()
举报原因:
原因补充:

(最多只允许输入30个字)