将鼠标事件连接到wxStaticBitmap(wx 2.8)

时间:2012-07-28 14:37:42

标签: c++ user-interface wxwidgets codeblocks

大家好我来这里打死马..

基本上我正在做的是将东西分配到地图上。

地图:用户上传后台的wxStaticBitmap对象 炸弹(笑):wxStaticBitmap对象

我设法通过wxMemoryDC + wxDC将炸弹合并到地图上的任意位置。

然而,我完全坚持用鼠标设置“炸弹”。我想点击地图上的某个地方,不知何故炸弹将被丢弃在我刚刚点击的位置。

我用wxMouseEvent和EVT_MOTION进行了攻击(好吧,就像在顶部声明的宏指令) 显然,它们只适用于wxWindow或wxFrame。

我想知道我是如何通过Connect()将鼠标事件绑定到staticbitmap但是我没有找到关于炸弹分配的正确用法......

3 个答案:

答案 0 :(得分:0)

通常,最好创建一个wxPanel作为框架的子项,然后将所有窗口小部件创建为wxPanel的子项。通过这种方式,大多数一切都可以按照你自然的预期进行,并且你可以减少陷阱。

答案 1 :(得分:0)

我发现的最好和最简单的解决方案是将自己的事件处理程序连接到wxStaticBitmap,如下所示:

sb->Connect(wxID_ANY,wxEVT_MOTION,
    wxMouseEventHandler(MyFrame::OnMouse),NULL,this);

答案 2 :(得分:0)

你可以像这样连接鼠标移动,鼠标左键和鼠标左键:

thiri = new wxStaticBitmap(this, wxID_ANY, wxImage(966, 680), /*image start point*/wxPoint(0,0), /* canvas size to display*/ wxSize(966, 680));

// mouse event on image
thiri->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler(Panel::OnMouseLeftDown), NULL, this );
thiri->Connect( wxEVT_MOTION, wxMouseEventHandler(Panel::OnMouseMove), NULL, this );
thiri->Connect( wxEVT_LEFT_UP, wxMouseEventHandler(Panel::OnMouseLeftUp), NULL, this);