Как получить события отбрасывания в wxTextCtrl? - PullRequest
0 голосов
/ 10 января 2010

У меня есть производный от wxTextCtrl класс, который переопределяет OnDropFiles. Однако перетаскивание чего-либо поверх элемента управления ничего не делает. (Курсор изменится на курсор «не разрешен».) Я попробовал DragAcceptFiles (true), но он включил только встроенный обработчик сброса. (Который просто загружает файл в элемент управления.) Как я могу вызвать свой собственный обработчик?

Я также попробовал SetDropTarget, но это так и не было вызвано. Это работало в wxFrame, хотя.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 10 января 2010

Это урезанная версия того, что у меня есть в одном из моих проектов:

Код моей формы

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 голосов
/ 11 января 2010

Вы должны обработать событие EVT_DROP_FILES. Любая другая попытка получить уведомление потерпит неудачу: (

...