如何在运行时更改使用资源定义创建的 COMBOBOX
控件的高度,以便我可以在组合框中插入新字符串?字符串插入代码有效,但前提是我在资源定义中为组合框设置了固定高度(例如 28 个单位)。但这并不方便,因为字符串的数量是动态的。
我知道我可以在运行时创建对话框,但是我不能使用对话框单元,而且资源效率更高......
这是我的代码的简化版本。
资源文件:
IDD_SETTINGS DIALOG 0, 0, 100, 100
BEGIN
COMBOBOX IDC_COMBO, 0, 0, 100, 14, CBS_DROPDOWNLIST
END
主窗口和对话框的窗口过程:
BOOL CALLBACK WndProcSettings(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_INITDIALOG:
//...
break;
default:
return FALSE;
}
return TRUE;
}
LRESULT CALLBACK WndProcMain(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_SETTINGS:
DialogBox(hInstance, MAKEINTRESOURCE(IDD_SETTINGS), hWnd, WndProcSettings);
break;
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return(0L);
}
最佳答案
我假设您指的是组合框下拉部分的高度。
您仍然可以使用对话单元,请查看 GetDialogBaseUnits这将返回每个对话单元的像素数。如果您使用的是非系统字体,则以下知识库文章详细介绍了计算 - How To Calculate Dialog Base Units with Non-System-Based Font .
您可以使用 SetWindowPos 以编程方式更改组合框的大小.
关于更改 COMBOBOX 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923844/