Clientdata in Windows

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Donnerstag 20. September 2007, 19:23

Hi,

hat irgendwer eine Lösung für das Problem? Es tritt nur in Windows auf wies scheint:

Code: Alles auswählen

wxListBox::DoSetItemClientData(): Can't use client data with owner-drawn listboxes
Das wäre ziemlich umständlich wenn ich nur wegen Windows SetClientdata() für Listboxes nicht verwenden könnte :-(

Bin um Tips dankbar.

Danke
Stefan
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 21. September 2007, 07:45

Stolzi hat geschrieben:Das wäre ziemlich umständlich wenn ich nur wegen Windows SetClientdata() für Listboxes nicht verwenden könnte
Hallo Stefan!

Du könntest die ClientDaten in einer Liste speichern. Das macht auch nicht mehr Arbeit als die Verwendung von SetClientData. Du brauchst nur den Index der aktuell markierten Zeile auch als Index für den Zugriff auf die Liste heran ziehen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Freitag 21. September 2007, 08:45

Jo stimmt, ist eigentlich nicht mehr Arbeit... Aber ist mir irgendwie undirekter und eher als workaround vorgekommen. Aber werd ich wohl so machen.

Danke dir
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

Freitag 21. September 2007, 18:51

Stolzi hat geschrieben:Aber ist mir irgendwie undirekter und eher als workaround vorgekommen.
Ist es auch.

Mach nen Post auf in der wx Mailingliste und spreche das mit den Devs ab. Riecht für mich nach ein Bug-Ticket, das man absetzen sollte; aber vorher an die Mailingliste wenden.

mfg
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 21. September 2007, 19:13

listbox.cpp:

Code: Alles auswählen

#if wxUSE_OWNER_DRAWN
    if ( m_windowStyle & wxLB_OWNERDRAW )
    {
        // client data must be pointer to wxOwnerDrawn, otherwise we would crash
        // in OnMeasure/OnDraw.
        wxFAIL_MSG(wxT("Can't use client data with owner-drawn listboxes"));
    }
#endif // wxUSE_OWNER_DRAWN

    if ( ListBox_SetItemData(GetHwnd(), n, clientData) == LB_ERR )
        wxLogDebug(wxT("LB_SETITEMDATA failed"));
}
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten