【发布时间】:2013-12-05 00:13:04
【问题描述】:
因此,在我的大型机功能中,我创建了一个工具栏,并且在此工具栏上我想包含 2 个标准组合框:(文本框、下拉按钮、下拉菜单)。我使用 CComboBox 类。我的工具栏也是使用 CBCGPro 创建的。
第一个组合框已创建并且看起来不错。代码如下:
CRect rect;
m_wndToolBarSelectCN.SetButtonInfo(0, IDM_SHOW_SELECT_CN_TOOLBAR, TBBS_SEPARATOR, 175);
m_wndToolBarSelectCN.GetItemRect(0, &rect);
rect.bottom = rect.top + 200;
sg_cbToolsbarClasses.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN, rect,
&m_wndToolBarSelectCN, IDS_TOOLBAR_SELECT_CB_CLASS);
m_wndToolBarSelectCN 是我在大型机函数中创建的工具栏,sg_cbToolsbarClasses 是我的 CcomboBox 对象。
我的第二个 ComboBox 直接在第一个 ComboBox 的右侧,有下拉菜单和下拉按钮,但没有文本框。它的所有功能也都有效。代码如下:
m_wndToolBarSelectCN.SetButtonInfo(1, IDM_SHOW_SELECT_CN_TOOLBAR, TBBS_DROPDOWN, 500);
m_wndToolBarSelectCN.GetItemRect(1, &rect2);
rect2.bottom = rect2.top + 200;
sg_cbToolsbarNodes.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN, rect2,
&m_wndToolBarSelectCN, IDS_TOOLBAR_SELECT_CB_NODE);
这是否与代码有关,我在这些函数中做错了吗?还是与资源文件/位图有关?
【问题讨论】:
-
猜测:
m_wndToolBarSelectCN.GetItemRect(3, &rect2);返回一个无效的矩形。您可以调试并检查返回的内容吗?顺便说一句,为什么在第一种情况下你使用索引 0,而在第二种情况下你使用索引 3? -
你确定你的工具栏有这3个元素吗?
-
0 和 3 是我的资源文件中按钮的索引。最初有两个按钮 0 和 1 以及两个组合框 2 和 3。出于这个问题的目的,我省略了两个有效的按钮,忘记更改第二个组合框的索引。我现在就编辑它
-
对于 GetItemRect,它在提供的索引处返回一个边界矩形。我没有给它一个大小,如果我没记错的话,它应该默认填充工具栏上为其提供的空间