如何增加mfc中组合框控件的高度?

Posted

技术标签:

【中文标题】如何增加mfc中组合框控件的高度?【英文标题】:How to increase the height of the combobox control in mfc? 【发布时间】:2015-01-26 14:11:15 【问题描述】:

我想增加组合框控件的高度。正在增加宽度。但是当我试图增加组合框高度时,它并没有增加。我很清楚我想增加控件的垂直高度。通常我创建的combobox控件如下。

如上图所示,红色边框的控件是组合框控件,我想增加高度。如果你可以看看下图的EDIT控件(注意编辑控件的大小)。类似于编辑控件的大小我必须增加组合框控件的高度。

CString str;
CSize   sz;
CDC*    pDC = m_comboCtrl.GetDC();

m_comboCtrl.GetLBText(0, str);
sz = pDC->GetTextExtent(str);

m_comboCtrl.SetItemHeight(-1,50);

增加垂直高度后,控件中的文本非常小,我们如何使文本适合控件(这类似于默认组合框控件中的普通文本)。但是控件中的文本为接下来,

任何人都可以让我知道如何使文本居中到控件中,如下图所示。上图中的文本在顶部,但我想让文本居中为标准控件中的文本。

【问题讨论】:

ComboBox_SetItemHeight 或相应的 MFC 实现 CComboBox::SetItemHeight。 index/nIndex 必须为 -1 才能设置选择字段的高度。 @IInspectable ,通过 sz.cy=50 后,组合框高度增加了。我们不能使组合中的文本完全适合控件。高度修改后组合框控件是如原始帖子所示。请参考该图像并请告诉我,即使我增加了高度,我们也可以使文本适合控件。 @IInspectable,我已经更新了我的帖子,请看一下,请告诉我您的建议。 这是一个不同的主题,我建议为此提出一个新问题。由于您找到了最初问题的答案,请考虑留下答案(请参阅Can I answer my own question?)。 @IInspectable,关于组合中文本的垂直对齐,正如您建议将其作为一个单独的问题提出的那样,我做到了请参考此链接以了解该问题link,我要求您提供看看那个问题,请告诉我您的宝贵建议。 【参考方案1】:

要增加组合框的高度,我们需要在 OnInitDialog() 中这样做,如下所示,

CString str;
CSize   sz;
CDC*    pDC = m_comboCtrl.GetDC();

m_comboCtrl.GetLBText(0, str);
sz = pDC->GetTextExtent(str);

m_comboCtrl.SetItemHeight(-1,50);//CCombobox m_comboCtrl;

SetItemHeight 中的 50 表示现在我们术语中称为高度的 y 坐标。在 OnInitDialog() 中添加上述代码 sn-p 后,组合框看起来像(参考我添加图像的原始帖子增加高度后的组合框控件(图2))。

【讨论】:

【参考方案2】:

按照http://dotnetbutchering.blogspot.com/2008/03/vc-mfc-how-to-set-combobox-dropdown.html上的说明进行操作:

在 MFC 设计器中

    单击下拉控件中的箭头:将出现一个调整大小的矩形。 调整下拉菜单的高度。

瞧。

【讨论】:

【参考方案3】:

在“属性”窗口中将 Type 属性设置为 Simple

【讨论】:

以上是关于如何增加mfc中组合框控件的高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 工具栏中添加自定义控件

MFC组合框控件下拉列表式如何读取所选值和设置默认选项

列表控件中的 MFC 对话框组合框

MFC的组合框(ComboBox)控件切换下拉样式

MFC 组合框不可编辑

转VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)