1
我是新的編程API與C + +。添加新值時創建組合框時遇到問題。這是我的代碼:ComboBox在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);
} 當我運行這段代碼,它只能說明我把CB_SETCURSEL的價值,但我不能選擇其他值。這意味着下拉按鈕不起作用。 我從這裏得到的代碼: https://msdn.microsoft.com/en-us/library/windows/desktop/hh298364(v=vs.85).aspx
在此先感謝!
編輯:這是我的WinProc功能,我只完成了GUI部分。
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;
}
請向我們展示您的WndProc功能。您在發送'CB_SETCURSEL'消息時沒有放置任何值,您只需在組合框項目列表中選擇一個字符串即可。這按預期運行,您的問題在別處。 – Ron
已編輯。是的,組合框只顯示我用CB_SETCURSEL設置的字符串。當我點擊箭頭時,它應該放棄一個帶有「SECOND VALUE」字符串的列表。 – sasorihuriko
上面的代碼產生[期望的行爲](http://i.imgur.com/fUMtZZ1.png)。問題在別處。 – Ron