2010-11-02 52 views
1

我想在我的窗体上添加一个CComboBoxEx,但我必须将其与其他控件对齐并使其高度相同。CComboBoxEx问题与不同的DPI,高度计算

问题是,我无法找到哪个是获得此控件高度的正确方法。

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

有没有一种方法可以根据图像和当前的DPI设置计算ComboBoxEx的大小?因此,如果我无法调整控件的内部填充,我至少可以扩展其他控件。据我看,MSDN根本不涉及大小问题。

回答

2

ComboBoxes会自动设置控件的高度,并且正如您发现的那样,尝试设置自己的高度实际上会影响下拉列表的高度。

要得到控制的实际高度(所以你可以调整你的其他控件),您可以使用GetWindowRect:

RECT rc; 
GetWindowRect(hWndCombo, &rc); 
int iComboHeight = rc.bottom - rc.top; 

我不知道的一个很好的方法来改变组合框控件的高度本身,坦率地说,我不相信这是可能的,至少没有很多的子类。正因为如此,我已经实现了自己的组合式控制。

虽然它可能没有帮助,但您也可以看看GetComboBoxInfo()函数,看看它是否提供了任何有用的信息。