【问题标题】: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() 函数,看看它是否提供了任何有用的信息。

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多