想让没有派生自CWnd的类接收用户消息,可以吗,如何实现??

ri_aje 2006-01-18 05:55:29
z
...全文
151 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
psbeond 2006-03-14
  • 打赏
  • 举报
回复
好像从CObject派生的都可以吧。
郑再鹏 2006-03-14
  • 打赏
  • 举报
回复
在.h中添加DECLARE_DYNCREATE(class_name)和DECLARE_MESSAGE_MAP( )
在.cpp中添加IMPLEMENT_DYNCREATE(class_name, base_class_name);
然后在.cpp中通过BEGIN_MESSAGE_MAP和END_MESSAGE_MAP来处理消息响应。
具体原理可参见《深入浅出MFC》
菜牛 2006-03-14
  • 打赏
  • 举报
回复
从CCmdTarget派生类可以接受WM_COMMAND消息。
rockersz 2006-02-25
  • 打赏
  • 举报
回复
直接用API吧,自己处理消息
郑再鹏 2006-02-25
  • 打赏
  • 举报
回复
帮你顶一下。
zwjchina 2006-02-25
  • 打赏
  • 举报
回复
显然可以,怎么实现嘛,就是你用CreateWindow在创建个窗口(可以不可见)
然后,自己给它指定窗口过程。
CWnd提供了微软基础库中所有窗口的基本功能。 CWnd对象与Windows的窗口不同,但是两者有紧密联系。CWnd对象是由CWnd的构造函数和析构函数创建或销毁的。另一方面,Windows的窗口是Windows的一种内部数据结构,它是由CWnd的Create成员函数创建的,而由CWnd的虚拟析构函数销毁。DestroyWindow函数销毁Windows的窗口,但是不销毁对象。 CWnd消息映射机制隐藏了WndProc函数。接收到的Windows通知消息通过消息映射被自动发送到适当的CWnd OnMessage成员函数。你可以在派生中重载OnMessage成员函数以处理成员的特定消息CWnd同时还使你能够为应用程序创建Windows的子窗口。先从CWnd继承一个,然后在派生中加入成员变量以保存与你的应用程序有关的数据。在派生实现消息处理成员函数和消息映射,以指定当消息被发送到窗口时应该如何动作。 你可以经过两个步骤来创建一个子窗口。首先,调用构造函数CWnd以创建一个CWnd对象,然后调用Create成员函数以创建子窗口并将它连接到CWnd对象。 当用户关闭你的子窗口时,应销毁CWnd对象,或者调用DestroyWindow成员函数以清除窗口并销毁它的数据结构。 在微软基础库中,从CWnd派生了许多其它以提供特定的窗口型。这些中有许多,包括CFrameWnd,CMDIFrameWnd,CMDIChildWnd,CView和CDialog,被用来进一步派生。从CWnd派生的控件,如CButton,可以被直接使用,也可以被进一步派生出其它来。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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