wxWidgets通过wxPaintDC将鼠标事件连接到形状对象以进行删除

问题描述 投票:0回答:1

我有一个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);
}
c++ events mouse wxwidgets
1个回答
0
投票

您不能使用wxPaintDC支持“OnPaint”事件处理程序。而不是这个,使用wxClientDC或wxWindowDC。

并且你最好将wxFrame指针传递给矩形而不是wxDC派生类。然后,矩形将在需要时获得正确的直流。

© www.soinside.com 2019 - 2024. All rights reserved.