高手请进!API 难题(探索消息映射机制)!

Ideal 2000-09-09 10:56:00
我在用 API 进行编程时,遇到一个问题:

typedef LRESULT (*PFN)(HWND, UINT, WORD, LONG); // 函数宏定义
typedef struct _MSD
{
UINT uMessage; // 从 WINDOWS 传过来的消息
PFN pFunc; // 处理此消息的函数
}MSD;
typedef struct _MSDI
{
int cmsd; // 处理的消息总数
MSD* pMSD; // 用对应的消息调用对应的函数
int default; // WINDOWS 发过来的消息不在列表中时默认的处理方式
}MSDI;

现在,我想把这些结构包含进我要设计的窗口类中,对 WINDOWS 消息进行处理:

class CWndObject
{
CWndObject(...);
virtual ~CWndObject();

:
:
:

MSD* m_pMSD;
MSDI* m_pMSDI;

:
:
:

LRESULT Dispath(MSDI*, ...);
:
:
:

};

问题有3:
(1)上面的宏和结构,我应该定义在类体内还是类体外比较合适?
(2)怎样给成员变量 m_pMSD 和 m_pMSDI 分配空间,并对其进行赋值(初始化)?
(3)这些消息是用函数 Dispath() 来分发调用的。也就是,怎样保证它调用正确的函数?(此问题实质是问题2,但我必须强调!)

注:我是想利用设计此类来探索消息映射机制原理。
...全文
247 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ideal 2000-10-10
  • 打赏
  • 举报
回复
很久没上来了,真是对不起大家了!
younet 2000-09-12
  • 打赏
  • 举报
回复
看看侯捷的《深入浅出MFC》不就得了,里面对MFC的消息机制谈得很深很深哦
Holly 2000-09-11
  • 打赏
  • 举报
回复
MFC的消息映射并不复杂,你也许被MFC的宏定义搞晕了!
其实MFC的消息映射非常的经典也精练,我很喜欢!MFC巧妙的使用了函数指针数组和类的重载函数机制!

你怎么会问:
怎么在类体外给结构分配空间和赋值?
结构的分配与赋值,与类没有必然关系,也没有因为有了类,就有何不同!你依然可以象C一样使用结构!
Ideal 2000-09-11
  • 打赏
  • 举报
回复
而且,怎么在类体外给结构分配空间和赋值,也是我想知道的。
Ideal 2000-09-11
  • 打赏
  • 举报
回复
MFC的消息映射太复杂,我想用 API 来实现。愿大家多多发表意见!
westaf 2000-09-09
  • 打赏
  • 举报
回复
不错,MFC的消息映射机制精妙绝伦,看看它的源码不就全都知道了。
westaf 2000-09-09
  • 打赏
  • 举报
回复
不错,MFC的消息映射机制精妙绝伦,看看它的源码不就全都知道了。
Holly 2000-09-09
  • 打赏
  • 举报
回复
1.建议放到外面,便于其他继承类和函数使用;
2.3.不明白你这样怎么进行消息映射的管理!你为何不参考MFC的消息映射机制!

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧