tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
746
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jacal Jacal ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    31
    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.
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    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).
     

  3. #3
    Jacal Jacal ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    31
    Schade, soetwas hatte ich befürchtet

    Is es dann eventluell möglich, Checkboxes in eine Scrollbar zu integrieren, oder auch nicht?
     

  4. #4
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    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).
     

  5. #5
    Jacal Jacal ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    31
    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)
     

  6. #6
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    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.
     

  7. #7
    Jacal Jacal ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    31
    Zitat Zitat von Endurion Beitrag anzeigen
    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.
    Funktioniert leider immer noch nicht:
    Code :
    1
    
    LISTBOX              IDC_AIV_LIST,     15, 15,140,100, ES_AUTOVSCROLL | WS_HSCROLL | LBS_HASSTRINGS | LBS_STANDARD | LBS_OWNERDRAWFIXED
    Geändert von Jacal (29.01.09 um 17:15 Uhr)
     

Ähnliche Themen

  1. checkbox value auf andere checkbox übertragen
    Von Smitmeit im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 09.03.10, 14:39
  2. CheckBox in ListBox mittels GridView
    Von andreason im Forum .NET WPF & Silverlight
    Antworten: 1
    Letzter Beitrag: 12.02.10, 10:28
  3. Listbox
    Von TheMatrixHasYou im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 20.08.04, 17:41
  4. Listbox
    Von thos im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 16.06.04, 09:39
  5. checkbox --> listbox --> seite generieren
    Von magdrei im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 02.06.04, 20:07