我想在我的表单上添加一个CComboBoxEx,但我必须将它与其他控件对齐并使其高度相同。
问题在于我无法找到获得此控件高度的正确方法。
如果我设置窗口矩形,则会影响下拉列表框。如果我强制它是一个固定的大小,并且组合内的内容更高,控件将被剪切在底部。
根据图像和当前的DPI设置,有没有办法计算ComboBoxEx的大小?因此,如果我无法调整控件的内部填充,我至少可以扩展其他控件。就我看来而言,MSDN根本没有触及尺寸问题。
答案 0 :(得分:2)
ComboBoxes会自动设置控件的高度,正如您所发现的,尝试设置自己的高度实际上会影响下拉列表的高度。
要获得控件的实际高度(这样可以调整其他控件的大小),可以使用GetWindowRect:
RECT rc;
GetWindowRect(hWndCombo, &rc);
int iComboHeight = rc.bottom - rc.top;
我不知道改变Combo控件本身高度的好方法,坦率地说,我认为至少没有大量的子类化是不可能的。由于这个原因,我实现了自己的组合式控件。
虽然它可能没有帮助,但您可能还想查看GetComboBoxInfo()函数,看看它是否提供了任何有用的信息。