如何做一个只有2个combobox的toolbar?

luokun 2005-07-20 03:16:09
在工具条上添加2个combobox,但工具条上只有这2个 combobox 没有其它按钮
在运行的时候工具条无法显示。

添加 combobox 的方法是参照这里写的
http://www.vckbase.com/document/viewdoc/?id=469

有没有办法显示出来,或者用别的bar控件。
...全文
140 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
msn: yhl10000@hotmail.com
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
我的email是
fish.yu@suzsoft.com
如果可能的话可以将源程序给我。

allenhiman 2005-07-21
  • 打赏
  • 举报
回复
m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_SEPARATOR, 80);

怀疑Index的值没取对?试个固定的比较大的index,看看是不是这得问题
(只是建议)
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
要得不是这个源代码,这个在http://www.vckbase.com/document/viewdoc/?id=469 有,
需要的是你创建wndToolBar的源代码。
不知你调试过没有。
luokun 2005-07-21
  • 打赏
  • 举报
回复
int index = 0;
RECT rect;

while(m_wndToolBar.GetItemID(index) != ID_TOOL_ZOOM)
index++;
m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_SEPARATOR, 80);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;

if(!m_wndToolBar.m_cmbZoom.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|
CBS_DROPDOWN | CBS_HASSTRINGS | WS_DISABLED, rect,
&m_wndToolBar, ID_TOOL_ZOOM))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}

while(m_wndToolBar.GetItemID(index) != ID_TOOL_SELECT)
index++;
m_wndToolBar.SetButtonInfo(index, ID_TOOL_SELECT, TBBS_SEPARATOR, 160);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;

m_wndToolBar.SetHeight(60);
if(!m_wndToolBar.m_cmbSelect.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL|
CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED, rect,
&m_wndToolBar, ID_TOOL_SELECT))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}

m_wndToolBar.m_cmbZoom.SetFont(&m_font);
m_wndToolBar.m_cmbSelect.SetFont(&m_font);
//////////////////////////////
m_wndToolBar.SetHeight(60);
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
调试一下你的toolbar的元素总共有多少,还有就是create的时候的资源文件。
建议贴上源代码。
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
体会一下这段代码的奥妙。

int index = 0;
RECT rect;

while(m_wndToolBar.GetItemID(index) != ID_TOOL_ZOOM)
index++;
m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_SEPARATOR , 400);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;
rect.left= 2;
rect.right= 400;
if(!m_wndToolBar.m_cmbZoom.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|
CBS_DROPDOWN | CBS_HASSTRINGS, rect,
&m_wndToolBar, ID_TOOL_ZOOM))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}

m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.SetCurSel(3);
m_wndToolBar.m_cmbZoom.ShowWindow(SW_SHOW);
index= 0;
while(m_wndToolBar.GetItemID(index) != ID_TOOL_SELECT)
index++; //TBBS_SEPARATOR
m_wndToolBar.SetButtonInfo(index, ID_TOOL_SELECT,TBBS_BUTTON , 200);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;
rect.left= 402;
rect.right= 600;
m_wndToolBar.SetHeight(60);
if(!m_wndToolBar.m_cmbSelect.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL|
CBS_DROPDOWNLIST | CBS_SORT , rect,
&m_wndToolBar, ID_TOOL_SELECT))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.SetCurSel(3);
m_wndToolBar.m_cmbSelect.ShowWindow(SW_SHOW);
//////////////////////////////
m_wndToolBar.SetHeight(60);
luokun 2005-07-21
  • 打赏
  • 举报
回复
现在可以出来了,不过还有个问题,这两个ComboBox的宽度只能一样,不能设成不同的值。这个问题有办法解决吗?
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
或者给我email,我将程序给你。
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
终于搞定了,哈哈,你仔细看我的源代码,还有在资源文件中,我把按钮宽度设为200。
int index = 0;
RECT rect;

while(m_wndToolBar.GetItemID(index) != ID_TOOL_ZOOM)
index++;
m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_BUTTON , 200);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;
rect.left= 2;
rect.right= 200;
if(!m_wndToolBar.m_cmbZoom.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|
CBS_DROPDOWN | CBS_HASSTRINGS, rect,
&m_wndToolBar, ID_TOOL_ZOOM))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}

m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.AddString("dfadslfk");
m_wndToolBar.m_cmbZoom.SetCurSel(3);
m_wndToolBar.m_cmbZoom.ShowWindow(SW_SHOW);
index= 0;
while(m_wndToolBar.GetItemID(index) != ID_TOOL_SELECT)
index++; //TBBS_SEPARATOR
m_wndToolBar.SetButtonInfo(index, ID_TOOL_SELECT,TBBS_SEPARATOR , 200);
m_wndToolBar.GetItemRect(index, &rect);

rect.top += 2;
rect.bottom += 200;
rect.left= 202;
rect.right= 400;
m_wndToolBar.SetHeight(60);
if(!m_wndToolBar.m_cmbSelect.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL|
CBS_DROPDOWNLIST | CBS_SORT , rect,
&m_wndToolBar, ID_TOOL_SELECT))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.AddString("fffffffffff");
m_wndToolBar.m_cmbSelect.SetCurSel(3);
m_wndToolBar.m_cmbSelect.ShowWindow(SW_SHOW);
//////////////////////////////
m_wndToolBar.SetHeight(60);
luokun 2005-07-21
  • 打赏
  • 举报
回复
所有的按钮?我想要的工具栏是没有按钮,只有两个ComboBox的效果。也就是把默认的那些新建、打开、复制……都删掉。
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
我没有增加任何按钮。
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
我用你的代码所有的按钮都出来了。
luokun 2005-07-21
  • 打赏
  • 举报
回复
调试了,一切正常。
如果在资源编辑器里,在工具栏上多加一个普通按钮(什么位置都行),那么结果是正确的。
但是如果没有普通按钮,或者在运行时删掉了那个普通按钮,工具栏都会出不来。
yhl10000 2005-07-21
  • 打赏
  • 举报
回复
发现一个bug。
while(m_wndToolBar.GetItemID(index) != ID_TOOL_SELECT)
index++;
这个index没有赋初值0。
程序逻辑中应该赋初值。
如果m_wndToolBar.GetItemID(index) != ID_TOOL_SELECT一直不成立,那么index在上一个index的值(相对ID_TOOL_ZOOM)将会一直增加。

还有你调试了没有。
oyljerry 2005-07-21
  • 打赏
  • 举报
回复
单步调试一下,看哪里有问题,多注意初始化,显示等
luokun 2005-07-21
  • 打赏
  • 举报
回复
m_wndToolBar就是简单的从CToolBar继承,加上了m_cmbZoom和m_cmbSelect这两个成员,除此之外没有作其它任何修改。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧