2017-08-03 1 views
1

Ich bin neu in der Programmierung API mit C++. Ich habe ein Problem mit dem Erstellen einer ComboBox beim Hinzufügen neuer Werte. Dies ist mein Code:ComboBox in Win32Api C++

void inline createName(HWND hwnd) { 
    CreateWindow(TEXT("STATIC"), TEXT("Name"), 
     WS_VISIBLE | WS_CHILD, 
     10, 10, 100, 20, 
     hwnd, NULL, NULL, NULL 
    ); 
HWND comboBox = CreateWindow(TEXT("COMBOBOX"), NULL, 
    CBS_DROPDOWN | WS_CHILD | WS_VISIBLE, 
    120, 10, 200, 20, 
    hwnd, NULL, NULL, NULL 
    ); 
TCHAR Names[2][50] = 
{ 
    TEXT("FIRST VALUE"), TEXT("SECOND VALUE") 
}; 

for (int index = 0; index < 2; index++) { 

    //Add string to combobox 
    SendMessage(comboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)Names[index]); 
} 
SendMessage(comboBox, CB_SETCURSEL, (WPARAM)0, (LPARAM)0); 

} Wenn ich diesen Code ausführen, ist es nur den Wert zeige ich in CB_SETCURSEL setzen, aber ich kann nicht andere Werte auswählen. Das bedeutet, dass der Dropdown-Button nicht funktioniert. Ich bekomme diesen Code von hier: https://msdn.microsoft.com/en-us/library/windows/desktop/hh298364(v=vs.85).aspx

Vielen Dank im Voraus!

EDIT: Dies ist meine WinProc-Funktion, ich habe nur den GUI-Teil beendet.

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { 

switch (msg) { 
case WM_CREATE: 
    createMenuBar(hwnd); 
    createName(hwnd); 
    createSex(hwnd); 
    createLanguage(hwnd); 
    createAddress(hwnd); 
    createButton(hwnd); 
    break; 
case WM_CLOSE: 
    DestroyWindow(hwnd); 
    break; 
case WM_DESTROY: 
    PostQuitMessage(0); 
    break; 
default: 
    return DefWindowProc(hwnd, msg, wParam, lParam); 
} 
return 0; 

}

+0

Bitte zeigen Sie uns Ihre 'WndProc' Funktion. Sie geben keine Werte ein, wenn Sie die Nachricht "CB_SETCURSEL" senden, Sie wählen lediglich eine Zeichenfolge in einer Liste von Combobox-Elementen aus. Dies funktioniert wie erwartet, Ihr Problem ist woanders. – Ron

+0

Bearbeitet. Ja, die Combobox zeigt nur die Zeichenfolge an, die ich mit CB_SETCURSEL gesetzt habe. Wenn ich auf den Pfeil klickte, sollte eine Liste mit der Zeichenfolge "ZWEITE WERT" fallen. – sasorihuriko

+0

Der obige Code erzeugt das [gewünschte Verhalten] (http://i.imgur.com/fUMtZZ1.png). Das Problem ist woanders. – Ron

Antwort

0

Dies ist ein wirklich gemeinsames Problem für neue Benutzer von Comboboxen. Comboboxen sind seltsam, da die Höhe die Höhe der Dropdown-Liste enthalten muss, nicht nur das Bearbeitungssteuerelement am oberen Rand.

Ich bin froh zu sehen, in den Kommentaren, dass Sie das herausgefunden haben. Ich füge das hinzu, damit zukünftige Leser eine bessere Chance haben, die Antwort zu finden.