wxWidgets通过wxPaintDC将鼠标事件连接到形状对象以进行删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wxWidgets通过wxPaintDC将鼠标事件连接到形状对象以进行删除相关的知识,希望对你有一定的参考价值。
我有一个myFrame类,我试图删除Rectangle对象,但我失败了。我做错了什么。 OnDoubleClick没有反应。
class shapes : public wxEvtHandler
...
class Rectangle: public Shape
....
class Circle: public Shape
...
class Line : public Shape
...
-----------------------
class myFrame
...
myViewer* view;
vector<Shape*> shapes;
myFrame::DrawRect(){
wxPaintDC dc(this);
Rectangle* r=new Rectangle();
r->setDC(&dc);
r->drawToDC();
r->Connect
(
wxEVT_LEFT_DCLICK,
wxMouseEventHandler(myFrame::OnDoubleClick),
NULL,
this
);
shapes.push_back(r);
}
答案
您不能使用wxPaintDC支持“OnPaint”事件处理程序。而不是这个,使用wxClientDC或wxWindowDC。
并且你最好将wxFrame指针传递给矩形而不是wxDC派生类。然后,矩形将在需要时获得正确的直流。
以上是关于wxWidgets通过wxPaintDC将鼠标事件连接到形状对象以进行删除的主要内容,如果未能解决你的问题,请参考以下文章
wxWidgets第十二课 wxBufferedPaintDC OnPaint函数中的双缓存DC
在 wxWidgets 中调整无边框 wxFrame 的大小