更改 COMBOBOX 的高度

标签 c winapi

如何在运行时更改使用资源定义创建的 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/

相关文章:

android - 如何在 android studio 中启用 neon 构建和调试 native 代码 (c)?

windows - EnumWindows 线程安全吗

.net - 使用 Visual Basic 在 Windows 窗体中嵌入 DOS 控制台

c - 选项卡控件上的闪烁 - WIN32

security - 从 Windows-7 登录屏幕创建事件

c - Netbeans C 程序构建因 tdm-gcc msys 失败

c - 字符数组中的最大字符数

c - 我的溢出代码不起作用

c - Pipe Reader 看不到 EOF 或 EOS

windows - Delphi:如何获取具有起始路径的正在运行的应用程序列表?