Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 具有不同DPI的Cmbox问题,高度计算_Windows_Winapi_Mfc_Combobox_Dpi - Fatal编程技术网

Windows 具有不同DPI的Cmbox问题,高度计算

Windows 具有不同DPI的Cmbox问题,高度计算,windows,winapi,mfc,combobox,dpi,Windows,Winapi,Mfc,Combobox,Dpi,我想在我的表单上添加一个ccomboxex,但我必须将它与其他控件对齐,并使其具有相同的高度 问题是我找不到获取此控件高度的正确方法 如果设置窗口矩形,则会影响下拉列表框。如果我强制它是某个固定大小,并且组合中的内容更高,那么控件将从底部剪裁 有没有办法根据图像和当前DPI设置计算ComboBoxEx的大小?这样,如果我不能调整控件的内部填充,我至少可以扩展其他控件。据我所知,MSDN根本不涉及大小问题。组合框自动设置控件的高度,正如您所发现的,尝试设置自己的高度实际上会影响下拉列表的高度 要获

我想在我的表单上添加一个ccomboxex,但我必须将它与其他控件对齐,并使其具有相同的高度

问题是我找不到获取此控件高度的正确方法

如果设置窗口矩形,则会影响下拉列表框。如果我强制它是某个固定大小,并且组合中的内容更高,那么控件将从底部剪裁


有没有办法根据图像和当前DPI设置计算ComboBoxEx的大小?这样,如果我不能调整控件的内部填充,我至少可以扩展其他控件。据我所知,MSDN根本不涉及大小问题。

组合框自动设置控件的高度,正如您所发现的,尝试设置自己的高度实际上会影响下拉列表的高度

要获得控件的实际高度(以便调整其他控件的大小),可以使用GetWindowRect:

RECT rc;
GetWindowRect(hWndCombo, &rc);
int iComboHeight = rc.bottom - rc.top;
我不知道有什么好方法可以改变Combo控件本身的高度,坦率地说,我认为至少在没有大量子类的情况下是不可能的。因此,我实现了自己的组合样式控件

虽然它可能不会有帮助,但您可能还希望查看GetComboBoxInfo()函数,看看它是否提供了有用的信息