Win32Api C++中的组合框

ComboBox in Win32Api C++

本文关键字:组合 C++ Win32Api      更新时间:2023-10-16

我是使用 C++编程 API 的新手。我在添加新值时创建组合框时遇到问题。这是我的代码:

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;

}

对于组合框的新用户来说,这是一个非常普遍的问题。 组合框很奇怪,因为高度必须包括下拉列表的高度,而不仅仅是顶部的编辑控件。

我很高兴在评论中看到您已经弄清楚了这一点。 我添加这个是为了未来的读者有更好的机会找到答案。