Clientdata in Windows

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

Clientdata in Windows

Beitragvon Stolzi » 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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Clientdata in Windows

Beitragvon gerold » 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

Beitragvon Stolzi » 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

Beitragvon poker » 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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » 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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder