您的位置:首页 > 其它

如何在父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 ===|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: