将鼠标事件连接到wxStaticBitmap(wx 2.8)
Connect mouse event to wxStaticBitmap (wx 2.8)
嗨,伙计们,我来这里是为了打败死马。。
基本上,我所做的就是把东西分配到地图上。
地图:用户上传的带有背景的wxStaticBitmap对象炸弹(lol):一个wxStaticBitmap对象
我现在用wxMemoryDC+wxDC把炸弹合并到地图上的任意位置。
然而,我完全被鼠标设置"炸弹"卡住了。我想点击地图上的某个地方,不知怎么的,炸弹就会落在我刚刚点击的位置。
我尝试了wxMouseEvent和EVT_MOTION(好吧,就像上面声明的宏一样)显然,它们只适用于wxWindow或wxFrame。
我想知道如何通过Connect()将鼠标事件绑定到静态位图,但我没有找到关于炸弹分配的正确用法。。。
我找到的最好、最简单的解决方案是将自己的事件处理程序连接到wxStaticBitmap,如下所示:
sb->Connect(wxID_ANY,wxEVT_MOTION,
wxMouseEventHandler(MyFrame::OnMouse),NULL,this);
通常,最好创建一个wxPanel作为框架的子级,然后将所有小部件创建为wxPanel的子级。通过这种方式,大多数事情都能像你自然期望的那样工作,你会遇到更少的麻烦。
您可以这样连接鼠标移动、鼠标左键向下和鼠标左键向上:
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);
相关文章:
- wx通用目录控制错误"wxTheFileIconsTable was nullptr"
- dev Wx Dev C++ vs Graphics.h?
- wx帧缺少最大化按钮
- wx小部件计时器不启动?
- 单击wx切换按钮时不捕获鼠标
- wx工具栏:获取工具的位置和大小
- 带有下拉菜单的wx工具栏:对所选项目没有反应
- WXWIDGETS应用于WXStaticBitMap时,屏幕截图将大部分图像留为空白
- 升级到非官方的 wxWidgets 3.0 = > 致命错误 wx/wx.h:没有这样的文件或目录
- wx颜色设置与整数数组
- 禁用按钮功能(WX小部件)
- wx小部件和代码:块 - 缺少 <wx/led.h> 用于 LED 组件
- 无法设置 wx日期时间日、月和年
- wx功能区按钮栏:在运行时更改按钮的图像
- (MSVC 2017 /WALL & /WX)包括 Iostream 产生 800 条警告
- wxStaticBitmap 没有名为 "SetScaleMode()" 的成员
- scons ParseConfig 在 Windows 上使用 wx-config 的行为不正确
- 禁止显示 wx文件名::规范化错误消息
- wx窗口自动适应父窗口大小
- 将鼠标事件连接到wxStaticBitmap(wx 2.8)