我有一个覆盖 OnDropFiles 的 wxTextCtrl 派生类。但是,将某些东西拖到控件上没有任何作用。(光标更改为“不允许”光标。)我尝试了 DragAcceptFiles(true) 但这仅启用了内置的放置处理程序。(这只是将文件加载到控件中。)我怎样才能调用我自己的处理程序?
我也尝试过 SetDropTarget,但也从未被调用过。不过,它在 wxFrame 中工作。
有任何想法吗?
我有一个覆盖 OnDropFiles 的 wxTextCtrl 派生类。但是,将某些东西拖到控件上没有任何作用。(光标更改为“不允许”光标。)我尝试了 DragAcceptFiles(true) 但这仅启用了内置的放置处理程序。(这只是将文件加载到控件中。)我怎样才能调用我自己的处理程序?
我也尝试过 SetDropTarget,但也从未被调用过。不过,它在 wxFrame 中工作。
有任何想法吗?
这是我在一个项目中的精简版:
我的表单代码
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;
}
希望有帮助!
您必须处理 EVT_DROP_FILES 事件。任何其他获得通知的尝试都将失败:(