Win32Api C++中的组合框
ComboBox in Win32Api C++
我是使用 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;
}
对于组合框的新用户来说,这是一个非常普遍的问题。 组合框很奇怪,因为高度必须包括下拉列表的高度,而不仅仅是顶部的编辑控件。
我很高兴在评论中看到您已经弄清楚了这一点。 我添加这个是为了未来的读者有更好的机会找到答案。
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 可组合的lambda/std::函数与std::可选
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 混合组合和继承的C++问题
- 我需要将多个函数组合为一个函数
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 通过组合不同的类型来创建唯一的id
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 模板元编程:如何将参数包组合成新的参数包
- 检查向量是否具有所有可能的字符组合
- 如何在加密++中将两个源组合成新的源
- 根中的组合
- 更改 C++ 中的组合分类变量
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 组合字符串不适用于 libCurl,C++
- 测试两个类型列表中的所有组合
- 将多个 for 循环组合成单个迭代器
- 如何从组合指数中找到仓位
- 防止组合框被关闭
- 如何解决可能的唯一组合问题