C++ 当我添加代码进行拖放时,wxwidget应用程序在退出时崩溃
我有一个使用dragandrop的wxwidget应用程序,当我关闭该应用程序时,它会在以下行崩溃:C++ 当我添加代码进行拖放时,wxwidget应用程序在退出时崩溃,c++,drag-and-drop,wxwidgets,C++,Drag And Drop,Wxwidgets,我有一个使用dragandrop的wxwidget应用程序,当我关闭该应用程序时,它会在以下行崩溃: virtual ~wxDropTargetBase() { delete m_dataObject; } 我通过以下方式设置drapand drop: MainWindow::MainWindow() : MainWindowTemplate(NULL), m_fileDropTarget(textSourceFolder) { // connect events th
virtual ~wxDropTargetBase()
{ delete m_dataObject; }
我通过以下方式设置drapand drop:
MainWindow::MainWindow() : MainWindowTemplate(NULL), m_fileDropTarget(textSourceFolder)
{
// connect events
this->Connect(wxEVT_IDLE, wxIdleEventHandler(MainWindow::OnIdle));
// set window minimum size - work around bug that ignores outer border and sets min size slightly too small
wxSize minSize = sizerOuter->GetMinSize();
minSize.SetWidth(minSize.GetWidth() + 16);
minSize.SetHeight(minSize.GetHeight() + 16);
SetMinSize(minSize);
Layout();
// set file drop target
SetDropTarget(&m_fileDropTarget);
}
还有我的
class MyFileDropTarget : public wxFileDropTarget
{
public:
MyFileDropTarget(wxTextCtrl *textCtrl)
{
m_fileTextCtrl = textCtrl;
}
virtual bool wxFileDropTarget::OnDropFiles (wxCoord x, wxCoord y, const wxArrayString &filenames)
{
if (filenames.size() > 0)
{
m_fileTextCtrl->SetValue(filenames.Item(0));
return true;
}
return false;
}
private:
wxTextCtrl *m_fileTextCtrl;
};
问题是什么?我如何解决它?看起来您的m_fileDropTarget是一个对象,在这种情况下,它会被删除两次,因为当您调用SetDropTarget时,它会获得传递给它的指针的所有权