0

我有一个覆盖 OnDropFiles 的 wxTextCtrl 派生类。但是,将某些东西拖到控件上没有任何作用。(光标更改为“不允许”光标。)我尝试了 DragAcceptFiles(true) 但这仅启用了内置的放置处理程序。(这只是将文件加载到控件中。)我怎样才能调用我自己的处理程序?

我也尝试过 SetDropTarget,但也从未被调用过。不过,它在 wxFrame 中工作。

有任何想法吗?

4

2 回答 2

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 回答