ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
746
746
EMPFEHLEN
-
Hallo,
wie kann ich mit der WinAPI eine Checkbox in eine Listbox einfügen? Aus den MSDN-Angaben werde ich leider nicht schlau
Ich benutze den MinGW-Compiler.
Beste Grüße,
Jacal.
-
Das ist leider keine offizielle Control (in MFC gibt's eine Hilfsklasse, die die Arbeit erledigt). Da musst du selber ran:
Eine normale Listbox mit Owner-Draw-Items. Innerhalb des WM_PAINT-Aufrufes musst du dann selbst die Checkboxen zeichnen, rechts daneben den Item-Text (siehe dazu DrawFrameControl).
Auch auf die Klicks musst du reagieren, und zusätzlich den Checkbox-Status irgendwo per Item speichern (LB_SETITEMDATA bietet sich an).
-
Schade, soetwas hatte ich befürchtet

Is es dann eventluell möglich, Checkboxes in eine Scrollbar zu integrieren, oder auch nicht?
-
Bei einer Scrollbar ist es noch Ecken kniffliger. Sieh dich mal auf http://www.codeproject.com um. Dort gibt es bestimmt auch dafür fertige Controls (mit Sourcecode).
-
Ok, also ich habe das ganze jetzt nach dieser Methode gelöst.
Nur gibt es dabei ein Problem in diesem Teil:
Code :1 2 3 4
case WM_DRAWITEM: if(wParam == ID_LISTBOX) // Wenn Listbox... return DrawItem((LPDRAWITEMSTRUCT)lParam); //...Eintrag neu zeichnen return(0);
Mein Dialog-Window sendet komischerweiße die Nachricht WM_DRAWITEM nicht, welchen ich brauche, da in diesem Fall lParam die Nachrichten für LPDRAWITEMSTRUCT beinhaltet.
Gibt es eine möglichkeit manuell eine LPDRAWITEMSTRUCT zu erstellen oder den Dialog dazu zwingen, die Message DRAWITEM für meine Listbox zu senden?
Mfg, Jacal
Edit:
Ich habe jetzt einmal versucht, WM_DRAWITEM manuell zu senden, doch das Programm stürzt dabei jedesmal ab
Hat jemand eine Ahnung, woram das liegen könnte?
Code :1 2 3 4 5
int ItemAnz= GetListBoxInfo(GetDlgItem(hDlg,IDC_AIV_LIST)); RECT lRect={ 15, 15, 140, 100 }; DRAWITEMSTRUCT di={ ODT_LISTVIEW, IDC_AIV_LIST, ItemAnz, ODA_DRAWENTIRE, ODS_DEFAULT, GetDlgItem(hDlg, IDC_AIV_LIST), hdc, lRect, 0 }; SendMessage(hDlg,WM_DRAWITEM, (WPARAM)IDC_AIV_LIST, (LPARAM)&di );Geändert von Jacal (28.01.09 um 17:29 Uhr)
-
Damit WM_DRAWITEM bei der Listbox kommt, musst du ein paar Styles aktiv haben:
Das müsste LBS_OWNERDRAWFIXED sein. Und ich meine, es muss auch explizit LBS_HASSTRINGS mit dabei sein.
-
Ähnliche Themen
-
checkbox value auf andere checkbox übertragen
Von Smitmeit im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 09.03.10, 14:39 -
CheckBox in ListBox mittels GridView
Von andreason im Forum .NET WPF & SilverlightAntworten: 1Letzter Beitrag: 12.02.10, 10:28 -
Listbox
Von TheMatrixHasYou im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 20.08.04, 17:41 -
Listbox
Von thos im Forum C/C++Antworten: 2Letzter Beitrag: 16.06.04, 09:39 -
checkbox --> listbox --> seite generieren
Von magdrei im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 02.06.04, 20:07





Zitieren
Login






