Seite 1 von 1
Clientdata in Windows
Verfasst: Donnerstag 20. September 2007, 19:23
von Stolzi
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
Re: Clientdata in Windows
Verfasst: Freitag 21. September 2007, 07:45
von gerold
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

Verfasst: Freitag 21. September 2007, 08:45
von Stolzi
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
Verfasst: Freitag 21. September 2007, 18:51
von poker
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
Verfasst: Freitag 21. September 2007, 19:13
von gerold
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
