大神你在吗?MFC对话框中多个工具栏如何单行显示
想在对话框中加入多个工具栏,但是不找不到可以在一排显示的方式.求大神们指点。
你可以自己创建工具栏,然后MoveWindow来控制位置大小。
如何在对话框上停靠自己新建的工具栏
//先创建一个工具栏资源IDR_TOOLBAR1
m_cToolBar.CreateEx(this, TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE
| CBRS_TOP //初始停靠在客户区顶部
| CBRS_GRIPPER //左边有一条竖线
| CBRS_TOOLTIPS //产生工具提示
|CBRS_FLYBY //产生消息文本
| CBRS_SIZE_DYNAMIC //动态改变大小
| CBRS_BORDER_TOP //在工具栏上面显示边框
);//创建
m_cToolBar.LoadToolBar(IDR_TOOLBAR1);//加载资源
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //不要忘了调用此函数,否则工具栏不显示。
2.创建一个带图标的工具栏
这个方法不需要创建工具栏资源,但是要准备几个图标资源
以下代码没有整理,你自行整理一下
m_ToolBar.CreateEx(this, TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE
| CBRS_TOP //初始停靠在客户区顶部
| CBRS_GRIPPER //左边有一条竖线
| CBRS_TOOLTIPS //产生工具提示
|CBRS_FLYBY //产生消息文本
| CBRS_SIZE_DYNAMIC //动态改变大小
| CBRS_BORDER_TOP //在工具栏上面显示边框
);
CImageList m_ImageList;
//设置图标
m_ImageList.Create(32, 32, ILC_COLOR24|ILC_MASK,2,2); //后面两个参数2,2,不重要。随便指定
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONLOOK));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_REFURBISH));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONDEL));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONCLEAR));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONORDER));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONSORT));
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_ImageList.Detach();
m_ToolBar.SetButtons(NULL, 8); //共8个按钮
// 下面设置每个工具按钮文字,设置后,每个图标下面就显示相应的文字。也可以不设置
m_ToolBar.SetButtonInfo(0, ID_LOOK, TBSTYLE_BUTTON, 0);
m_ToolBar.SetButtonText(0, " 查 看 ");
m_ToolBar.SetButtonInfo(1, ID_REFURBISH, TBSTYLE_BUTTON, 1);
m_ToolBar.SetButtonText(1, " 刷 新 ");
m_ToolBar.SetButtonInfo(2, ID_SEPARATOR, TBBS_SEPARATOR , 1);
m_ToolBar.SetButtonInfo(3, ID_DELETE, TBSTYLE_BUTTON , 2);
m_ToolBar.SetButtonText(3, " 删 除 ");
m_ToolBar.SetButtonInfo(4, ID_CLEAR, TBSTYLE_BUTTON, 3);
m_ToolBar.SetButtonText(4, " 清 空 ");
m_ToolBar.SetButtonInfo(5, ID_SEPARATOR, TBBS_SEPARATOR , 3);
m_ToolBar.SetButtonInfo(6, ID_ORDER, TBSTYLE_BUTTON , 4);
m_ToolBar.SetButtonText(6, " 排 序 ");
m_ToolBar.SetButtonInfo(7, ID_SORT, TBSTYLE_BUTTON , 5);
m_ToolBar.SetButtonText(7, " 分 类 ");
m_ToolBar.SetSizes(CSize(51,51), CSize(32,32)); //设置按钮的大小,注意这个按钮大小要和图像列表中图像的大小一致(32,32)
//CSize(51,51)设置按钮大小, CSize(32,32)设置按钮上图标大小,
注意,第一个CSize中的参数必须比第二个CSize中的参数大,分别大至少7和6,如下所述
//(CSize(cx1,cy1), CSize(cx2,cy2));cx1-cx2>=7,cy1-cy2>=6
//设置按钮ID_ORDER和ID_SORT具有下拉箭头
m_ToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
DWORD dwStyle = m_ToolBar.GetButtonStyle(m_ToolBar.CommandToIndex(ID_ORDER));
dwStyle |= TBSTYLE_DROPDOWN;
m_ToolBar.SetButtonStyle(m_ToolBar.CommandToIndex(ID_ORDER),dwStyle);
dwStyle = m_ToolBar.GetButtonStyle(m_ToolBar.CommandToIndex(ID_SORT));
dwStyle |= TBSTYLE_DROPDOWN;
m_ToolBar.SetButtonStyle(m_ToolBar.CommandToIndex(ID_SORT),dwStyle);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //不要忘了调用此函数,否则工具栏不显示。