wxClientData
-
Hallo
Kennt jemand eine gute Beschreibung, wie das mit den ClientData udn ClientObject unter wxWindows funktioniert?
Irgendwie werd ich nicht ganz schlau.
Also ich hab ne wxListBox in der ich Dateneinträge anzeigen will mit Namen. Mit jedem Eintrag soll das entsprechende Objekt verknüpft sein.
Hab das mal so ausprobiert, aber da smit dem Zeigercast von void* passt mir irgendwie nicht. Geht das nicht eleganter?class Data{...}; ... std::map<wxString, Data> datamap; ... wxListBox* list = new wxListBox( this, -1, wxDefaultPosition, wxSize( 200, 200 ) ); list->Append( datamap.find(_T("Blubb"))->first, &datamap.find(_T("Blubb"))->second ); wxMessageDialog dlg(this, ((Data*)list->GetClientData(0))->name ); dlg.ShowModal();
-
Dafür müsstest du die Dataklasse von wxClientData ableiten.
Aber eigentlich ist der void* Cast nicht so schlimm, die Datenobjekte
können ja durchaus nichts mit wx am Hut haben.
-
Ok, wenn du meinst.
Ich hab mal irgendwo gelesen das C Casts in C++ stinken
-
Sabi schrieb:
Ok, wenn du meinst.
Ich hab mal irgendwo gelesen das C Casts in C++ stinkenJa, ist nicht das ideale, aber void* ist in dem Fall imho aktzeptabel.
Leider gibts ja keine Typisierten Controls ala ComboBox<T>.Ausserdem gibts ja auch noch static_cast