2014-10-01 20 views
0

我有一个使用dragandrop当我关闭应用程序,它崩溃上这条线wxwidget应用:wxwidget应用程序崩溃,当我添加代码来执行拖放

virtual ~wxDropTargetBase() 
    { delete m_dataObject; } 

我设置了drapand降了这种方式:

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; 
}; 

的源代码是什么问题和浩我可以修复它吗?

回答

0

看起来你的m_fileDropTarget是一个对象,在这种情况下,它会被删除两次,因为当你调用SetDropTarget()时,它将传递给它的指针的所有权。

相关问题