【问题标题】:CComboBoxEx problems with different DPI, height calculationCComboBoxEx 不同DPI、高度计算的问题
【发布时间】:2010-11-02 12:32:49
【问题描述】:
我想在我的表单上添加一个 CComboBoxEx,但我必须将它与其他控件对齐并使其高度相同。
问题是我找不到获取此控件高度的正确方法。
如果我设置窗口矩形,这会影响下拉列表框。如果我强制它为某个固定大小,并且组合内的内容更高,则控件会在底部被剪裁。
有没有办法根据图像和当前 DPI 设置来计算 ComboBoxEx 的大小?因此,如果我无法调整控件的内部填充,我至少可以扩展其他控件。据我所知,MSDN 根本没有涉及大小问题。
【问题讨论】:
标签:
windows
winapi
mfc
combobox
dpi
【解决方案1】:
ComboBox 自动设置控件的高度,正如您所发现的,尝试设置自己的高度实际上会影响下拉列表的高度。
要获得控件的实际高度(以便您可以调整其他控件的大小),您可以使用 GetWindowRect:
RECT rc;
GetWindowRect(hWndCombo, &rc);
int iComboHeight = rc.bottom - rc.top;
我不知道改变 Combo 控件本身高度的好方法,坦率地说,我不相信至少在没有大量子类化的情况下这是可能的。因此,我实现了自己的组合式控件。
虽然它可能无济于事,但您可能还想看看 GetComboBoxInfo() 函数,看看它是否提供了任何有用的信息。