以下代码是在自定义控件中触发mousedown事件,传递给调用的窗口
1、在自定义控件 PhotoStarCtrl.h 头文件定义事件ID
#define wxTH_MOUSEDOWN_ID 0x0001
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(ENUM_PHOTOSTART_MOUSEDOWN, wxTH_MOUSEDOWN_ID)
END_DECLARE_EVENT_TYPES()
2、在自定义控件 PhotoStarCtrl.cpp 文件定义事件
DEFINE_EVENT_TYPE(ENUM_PHOTOSTART_MOUSEDOWN)
在控件的mousedown事件触发自定义消息
void PhotoStarCtrl::OnMouseDown(wxMouseEvent& event)
{
......
wxCommandEvent eventCustom(ENUM_PHOTOSTART_MOUSEDOWN);
wxPostEvent(this->GetEventHandler(), eventCustom);
}
3、在PhotoSeeFrame.h 中定义事件函数
void OnPhotoStarMouseDown(wxCommandEvent& event);
4、在PhotoSeeFrame.cpp 中 测试自定义事件,这里注意要用 wxID_ANY
BEGIN_EVENT_TABLE(PhotoSeeFrame, wxFrame)
EVT_COMMAND(wxID_ANY, ENUM_PHOTOSTART_MOUSEDOWN, PhotoSeeFrame::OnPhotoStarMouseDown)
END_EVENT_TABLE()
void PhotoSeeFrame::OnPhotoStarMouseDown(wxCommandEvent& event)
{
wxMessageBox("hello!","msg");
}