2010-01-10 4 views
0

J'ai une classe dérivée de wxTextCtrl qui remplace OnDropFiles. Cependant, faire glisser quelque chose sur le contrôle ne fait rien. (Le curseur se transforme en curseur 'non autorisé'.) J'ai essayé DragAcceptFiles (true) mais cela n'a activé que le gestionnaire de drop intégré. (Qui charge simplement le fichier dans le contrôle.) Comment puis-je faire appel à mon propre gestionnaire?Comment recevoir des événements drop dans un wxTextCtrl?

J'ai également essayé SetDropTarget, mais cela n'a jamais été invoqué non plus. Cela a fonctionné dans un wxFrame, cependant.

Des idées?

Répondre

0

Vous devez gérer l'événement EVT_DROP_FILES. Toute autre tentative de notification échouera :(

1

Ceci est une version allégée de ce que j'ai dans l'un de mes projets:

Mon code forme

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

La dropfiles classe

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

Hope that helps!

+0

Merci d'avoir essayé, mais cela n'a toujours pas fonctionné - OnDropFiles ne se fait jamais appeler, mais j'ai trouvé une solution, voir ma réponse –

+0

Bizarre, je ne gère certainement pas ça, je suppose que c'est parce que tu viens de wxTextCtrl peut-être? – SteveL

Questions connexes