当前位置:  开发笔记 > 编程语言 > 正文

在MFC中捕获消息 - 有什么区别?

如何解决《在MFC中捕获消息-有什么区别?》经验,为你挑选了1个好方法。

我只是想知道MFC中的以下两个消息陷阱之间的区别是什么(如果有的话)OnSize(..).

1 - 通过消息地图:
BEGIN_MESSAGE_MAP(CClassWnd, CBaseClassWnd)
...
    ON_WM_SIZE()
..
END_MESSAGE_MAP()
2 - 通过afx_message:
afx_msg type OnSize(...);

它们似乎可以互换使用,应该使用哪一个还是取决于其他因素?



1> ChrisN..:

这两个部分都是向类添加消息处理程序所必需的.消息映射应该在您的类中声明,以及任何消息处理函数的声明(例如,OnSize).

class CClassWnd : public CBaseClassWnd {
    ...
    afx_msg void OnSize(UINT nType, int cx, int cy);
    DECLARE_MESSAGE_MAP
};

afx_msg 只是一个空的占位符宏 - 它实际上没有做任何事情,但总是包含在惯例中.

然后在类的.cpp文件中定义消息映射:

BEGIN_MESSAGE_MAP(CClassWnd, CBaseClassWnd)
    ON_WM_SIZE()
END_MESSAGE_MAP()

这些宏为类生成查找表,该表允许将窗口接收的消息分派到相应的处理函数.的ON_WM_SIZE宏允许wParamlParam中消息参数WM_SIZE消息将被解码成用于消息处理程序函数的更多有意义的值(nType,cx,和cy在这种情况下).MFC提供了宏大多数窗口消息(WM_LBUTTONDOWN,WM_DESTROY,等).

你可以找到关于消息映射在MFC如何工作的详细信息,在这里在MSDN上.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有