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;
}
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
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
Der obige Code erzeugt das [gewünschte Verhalten] (http://i.imgur.com/fUMtZZ1.png). Das Problem ist woanders. – Ron