0

OnDropFilesをオーバーライドするwxTextCtrlから派生したクラスがあります。ただし、コントロール上で何かをドラッグしても何も起こりません。(カーソルが「許可されていない」カーソルに変わります。)DragAcceptFiles(true)を試しましたが、組み込みのドロップハンドラーしか有効になりませんでした。(ファイルをコントロールにロードするだけです。)独自のハンドラーを呼び出すにはどうすればよいですか?

SetDropTargetも試しましたが、それも呼び出されませんでした。ただし、wxFrameでは機能しました。

何か案は?

4

2 に答える 2

1

これは、私のプロジェクトの1つにあるものの簡略版です。

私のフォームコード

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

ドロップファイルクラス

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

お役に立てば幸いです。

于 2010-01-10T18:36:37.813 に答える
0

EVT_DROP_FILESイベントを処理する必要があります。通知を受け取る他の試みは失敗します:(

于 2010-01-11T01:44:44.447 に答える