求大神,MFC中怎么样在对话框工具栏添加非按钮控件 20

工具栏中添加下拉列表,其中部分代码如下://工具栏初始化if(!toolbar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBL... 工具栏中添加下拉列表,其中部分代码如下:
//工具栏初始化
if( !toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC,CRect( 0, 0, 0, 0) )|| !toolbar.LoadToolBar(IDR_TOOLBAR) )
{
TRACE0("Failed to create toolbar\n");
return -1;
}

//工具栏添加非按钮控件(失败)
int index = 6;// 占位符索引
//int index = toolbar.CommandToIndex( ID_X );
#define IDC_SCOMBO 1001
int width = 100;// 占位符宽度
toolbar.SetButtonInfo(index,IDC_SCOMBO,TBBS_SEPARATOR|TBBS_CHECKED,80);

CRect rect;
toolbar.GetItemRect(index,&rect);
int height = 300;// ComboBox下拉后高度,尽量长吧。
//rect.bottom = rect.top + height;
m_Combo.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_SORT|CBS_DROPDOWNLIST,rect,this,IDC_SCOMBO);

m_Combo.AddString(_T("item0"));
m_Combo.AddString(_T("item1"));
m_Combo.AddString(_T("item2"));
m_Combo.SetCurSel(0);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

若有RepositionBars函数,则下拉列表无响应。若无,则除了下拉列表外工具栏不显示。
展开
 我来答
bhtzu
2014-02-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4241万
展开全部
需要注意,CToolBar类的按钮,根本就不是按钮控件,也不是一个控件!
CToolBar本身,是不支持标准控件插入模式的,要想加入列表框之类的标准控件,只能通过子窗口的方式“画”上去,但这种实现方式实现后控件的显示和响应都有问题,有些问题可以手动处理,有些就很困难了。
一般在工具条上实现控件,推荐使用CDialogBar的办法(高版本VC更灵活和多样,不知道你的版本,以VC6为例),创建MFC工程的时候,选择工具条风格,让工具条具有CReBar类,这样就可以附加多个工具条(你上面代码只能一个,应该是VC6传统工具条模式),创建一个“条状”对话框资源,资源编辑器中放置需要的控件,加入到rebar显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式