2010-01-10 6 views
0

我有一個覆蓋OnDropFiles的wxTextCtrl派生類。然而,拖曳控件上的東西什麼也不做。 (遊標變成'not allowed'遊標。)我試過DragAcceptFiles(true),但是隻啓用了內置的拖放處理程序。 (它只是將文件加載到控件中。)我怎樣才能讓自己的處理程序被調用?如何在wxTextCtrl中接收放置事件?

我也嘗試過SetDropTarget,但是從來沒有被調用過。它在wxFrame中工作,但。

任何想法?

回答

0

您必須處理EVT_DROP_FILES事件。任何其他企圖得到通知將失敗:(

1

這是什麼,我有我的一個項目一個精簡版:

我的表單代碼

wxTextCtrl* textctrl = new wxTextCtrl(...); 
textctrl->SetDropTarget(new DropFiles(textctrl)); 

的DROPFILES類

class DropFiles: public wxFileDropTarget{ 
public: 
    DropFiles(wxTextCtrl *text): m_Text(text){} 
    bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& arrFilenames); 

private: 
    wxTextCtrl *m_Text; 
}; 

bool DropFiles::OnDropFiles(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), const wxArrayString& arrFilenames){ 
    //Just take the first filename 
    m_Text->SetValue(arrFilenames.Item(0)); 
    return true; 
} 

希望幫助!

+0

感謝您的嘗試,但仍然沒有工作 - OnDropFiles永遠不會被調用,但我找到了一個解決方案,但看到我的答案。 – 2010-01-11 01:47:57

+0

奇怪,我當然不處理它,我想這是因爲你是從wxTextCtrl派生或許? – SteveL 2010-01-14 18:26:07

相關問題