无法在VS对话框编辑器中更改组合框的高度

时间:2010-04-09 20:30:49

标签: c++ winapi wtl

我创建的任何组合框似乎都停留在12个高度的对话框单元中。 Microsoft的对话框中控件的间距和大小调整指南指出组合框应该是14个对话框单位高。

我甚至尝试在记事本中编辑资源文件并在Visual Studio中重新编译而不打开资源编辑器 - 但组合框的大小仍然错误!

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您为组合框specifies the size of the combo box when it is opened提供的高度。编辑控制部分的高度基于字体。 (或者如果您是画主,则根据您的项目大小。)

答案 1 :(得分:1)

在我的情况下,我已经处理了WM_WINDOWPOSCHANGING消息并改变了WINDOWPOS结构中的cy成员,它的工作原理可能有所帮助。

答案 2 :(得分:0)

您可以使用WTL :: CComboBox :: GetComboBoxInfo()获取组合组件HWND和大小,例如在OnInitDialog()中:

COMBOBOXINFO cbi = {sizeof COMBOBOXINFO}; 
CComboBox(GetDlgItem(ID_MYCOMBO)).GetComboBoxInfo(&cbi);
CRect rComboEdit = cbi.rcItem;
// adjust rComboEdit to your needs
CEdit(cbi.hwndItem).MoveWindow(rComboEdit);

答案 3 :(得分:0)

现在让我们假设您要更改下拉区域的大小(按下按钮时显示的列表)。请记住,组合框过去只是一个编辑框和一个粘在一起的列表。所以我们需要以某种方式改变总宽度/高度。

一种方法是直接在RC文件中编辑宽度/高度。

VS对话框编辑器令人惊讶的是它默认会创建一个默认的" drop"几乎为零像素的区域。你根本没有看到这个名单!

在对话框编辑器中,将鼠标光标悬停在下拉按钮上方,直到鼠标光标变为南北类型。然后单击,将显示真实边界,您可以修改该区域。

示例:

Dialog editor trick