Combobox Lesen



  • Hallo zusammen,

    Ich bin gerade dabei zum erstem Mal eine Combobox zu erstellen ohne MFC.
    Bisher bin ich wie folgt vorgegangen:

    //Beginn der Fensterprozedur

    HWND hwndCombobox;
    const char *ComboBoxItems[] = { "Eintrag1", "Eintrag2", "Eintrag3",
    "Eintrag4", "Eintrag5" };

    //Im case WM_CREATE

    hwndCombobox = CreateWindow ( "COMBOBOX", "Knopf",
    WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,
    50, 20, 220, 350,
    hwnd, NULL,((LPCREATESTRUCT) lParam)->hInstance, NULL);

    SendMessage( hwndCombobox,
    CB_ADDSTRING,
    NULL,
    reinterpret_cast<LPARAM>((LPCTSTR)ComboBoxItems[0]) );
    SendMessage( hwndCombobox,
    CB_ADDSTRING,
    NULL,
    reinterpret_cast<LPARAM>((LPCTSTR)ComboBoxItems[1]) );
    SendMessage( hwndCombobox,
    CB_ADDSTRING,
    NULL,
    reinterpret_cast<LPARAM>((LPCTSTR)ComboBoxItems[2]) );
    SendMessage( hwndCombobox,
    CB_ADDSTRING,
    NULL,
    reinterpret_cast<LPARAM>((LPCTSTR)ComboBoxItems[3]) );

    /// soweit mein bisheriger code

    Die combobox sieht genauso aus, wie ich mir das wünsche. Allerdings scheint mir das twas kompliziert zu sein und wäre froh um tipps, wie es einfacher geht.

    Nun möchte ich aber abfragen, welchen Eintrag der Benutzer gewählt hat.
    Im internet (auch in diesem Forum) hae ich so vieles darüber gefunden, aber
    es funktioniert alles nicht.

    Insbesondere bin ich nicht klargekommen mit der SendMesage Funktion.

    Kann mir jemand helfen, wie ich den Wert abfragen kann.

    Also folgende Anweisung in korrektem c++:

    int index;
    index = aktuelle Auswahl der Combobox

    oder alternativ:

    char comboboxauswahl[];
    comboboxauswahl = aktuelle Auswahl der Combobox

    kann mir vorstellen, dass ichgrundsätzlich etwa zu kompliziert mache und bin froh über jeden Hinweis



  • Falsches Unterforum -> WinAPI...

    Und zu deiner Frage:
    Du mußt die entsprechende Message 'CB_GETCURSEL' verwenden: http://msdn.microsoft.com/en-us/library/bb775845(v=VS.85).aspx
    (bzw. das Macro 'ComboBox_GetCurSel').

    Die generelle Frage ist jedoch, ob du dir wirklich Windows-Programmierung mit WinAPI antun willst, da es bessere Frameworks gibt (s. z.B. http://www.c-plusplus.net/forum/viewtopic-var-t-is-230583.html).



  • Hallo THE 69,

    Vielen Dank für deine Antwort.

    ich habe versucht:

    SendMessage( hwndCombobox,CB_GETCURSEL, 0, 0 );

    Nun habe ich im Internet gelesen, dass das erste Funktionsargument das Fenster ist,an welches die Nachricht gesendet werden soll. Dies wäre aber dann
    nicht die combobox, sondern (in meinem Fall) hwnd. Dies hat mit verwirrt.

    Vielmehr interessiert mich der Rückgabewert der Funktion.
    Gemäss MSDN ist dies der aktuelle Eintrag der Cobobox, also genau das, was mich interessiert. Es fehlen mir aber die iformationen, wie ich diesen auswerten kann.

    kommt dieser Rückgabewert als Sting, oder als int?
    Ich erhalte immer nur 0.



  • Es ist schon richtig, daß du das Handle der ComboBox angeben mußt (bei WinAPi sind alle Controls auch "Windows" -)

    Und der Rückgabewert ist ein Int (und bezeichnet den Index oder aber -1 (CB_ERR), falls kein Item selektiert ist):

    int nIndex = SendMessage( hwndCombobox, CB_GETCURSEL, 0, 0 );
    

    evtl. s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-246555.html



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply