如何在父Frame中处理子Frame发出的消息?
2011-11-02 10:35
495 查看
如何在父Frame中处理子Frame发出的消息?
////////////////////////////////////////////////////////////
步骤如下:
1.在宏里处理如下:
a.
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(wxEVT_MYCOMMAND, xxxx)
END_DECLARE_EVENT_TYPES()
xxxx 为自定义数字,不过翻到wxwidget内部,其宏定义中该value好像
没用!(...)
b. 定义wxEvT_MYCOMMAND 标识,此处是放在.cpp文件中
DEFINE_EVENT_TYPE(wxEVT_MYMYCOMMAND)
c. 定义宏EVT_MYCOMMAND
格式中把自定义标识改为自己即可.拷贝.
#define EVT_MYCOMMAND(id, fn) \
DECLARE_EVENT_TABLE_ENTRY( \
wxEVT_MYCOMMAND, id, wxID_ANY, \
(wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent( wxCommandEventFunction, &fn ), \
(wxObject *) NULL \
),
2.在BEGIN_EVENT_TABLE表中自定义映射.
EVT_MY_CUSTOM_COMMAND(wxID_ANY, MyFrame::OnMyfunction)
3.处理投递
自定义消息发送,this 一般是接受消息handler,也可其它wxEvtHandler.
wxCommandEvent myEvent(wxEVT_MY_CUSTOM_COMMAND);
wxPostEvent(this, myEvent);
4.自定义消息处理函数
必须符合wxCommandEventFunction格式,既为如下:
void OnMyfunction(wxCommandEvent& event);
////////////////////////////////////////////////////////////
在上面的第2、4步骤中,如果将代码放到子Frame的.cpp中实现,则没有问题,也可以进入消息处理函数,但是如果将代码放到父Frame中实现,则会总是报告下面的错误
obj\Debug\MainFrame.o||In function `_Z41__static_initialization_and_destruction_0ii':|
e:\Mypro\products\PCI8360\Software\PCI8360ATest\MainFrame.cpp|26|undefined reference to `__imp__wxEVT_MYCOMMAND'|
||=== Build finished: 1 errors, 0 warnings ===|
相关文章推荐
- 网易视频云分享:消息队列设计中如何保证同一用户的消息按序处理
- 一定搞懂Handler消息处理机制系列之「04.Message是如何触发的」
- 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息
- 如何屏蔽pocketpc 长按触笔时,发出的菜单消息
- 如何处理SAP云平台错误消息 there is no compute unit quota for subaccount
- ExtJs定时消息提示框,类似于QQ右下角提示,ExtJs如何定时向后台发出两个请求并刷新数据实例
- 如何处理在android中有来电就给来电用户发送一个消息?
- 如何接受消息,中断正在处理的过程
- 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
- 如何处理被拦截的键盘消息事件
- 如何处理Eclipse错误消息 The declared package does not match the expected package
- 如何找到MFC程序中的消息处理函数
- 如何捕获VCL没有处理的Windows消息
- Storm如何保证消息的可靠处理
- 控制台如何像windows程序那样处理消息事件
- Storm 是如何跟踪一条消息以及它衍生出来的消息都被成功处理的
- 如何处理错误消息Please install the gcc make perl packages
- Storm 是如何跟踪一条消息以及它衍生出来的消息都被成功处理的
- 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉
- c#如何处理自定义消息