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