2014-10-01 2 views
0

내가 dragandrop를 사용하고 내가 응용 프로그램을 닫을 때, 그것은이 라인에 충돌합니다 wxwidget 응용 프로그램이 드롭하는 코드를 추가 할 때 :wxwidget 응용 프로그램이 충돌, 내가 드래그를하고

virtual ~wxDropTargetBase() 
    { delete m_dataObject; } 

I 설치 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()으로 전화를 걸면 두 번 삭제됩니다.이 경우에는 전달 된 포인터의 소유권이 필요합니다.

관련 문제