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 的大小

wxWidgets第六课 EVT_ERASE_BACKGROUND背景擦除事件

描述wxWidgets中事件处理的类型转化

wxWidgets源码分析 - 消息映射表

6wxWidgets 事件处理