创建工具栏 分2种情况 对话框的工具栏 和 SDI 单文档工具栏编程
用到的函数
RecalcLayout 当窗体布局发生改变的时候 调用这个函数会调用 RePositionBar重新摆放工具条
ShowControlBar 显示隐藏 工具栏的函数 CControlBar是CToolBar的基类
IsWindowVisible CWnd的函数返回BOOL 检测从CWnd派生的 窗体是否可见
CCmdUI OnUpdateCmdUI消息 用于菜单的维护的一些函数如SetCheck等等
1. 工具栏 菜单都是镶嵌在框架类上的对与 一个单文档应用程序来说 首先 定义一个 CToolBar 的对象
if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT //创建一个工具栏
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || //加载一个工具栏 资源
!m_newToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); //设置工具栏可以停靠
this->EnableDocking(CBRS_ALIGN_ANY); //设置框架窗体可以被停靠 缺一不可
this->DockControlBar(&m_newToolBar); //停靠工具栏
以上是 SDI中MFC框架 OnCreate函数中 代码
2.对话框的工具栏添加 特色工具栏
1. ///特色工具栏的添加
CToolBar *m_wndToolBar=new CToolBar; //工具条对象堆中创建
m_wndToolBar->CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
CRect(10,10,0,0)); //创建工具栏
m_wndToolBar->LoadToolBar(IDR_TOOLBAR1) ; //加载工具栏资源
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //停靠工具栏
AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST
指的是空间ID的范围,在MFC中
AFX_IDW_CONTROLBAR_FIRST 的值为 0xE800
AFX_IDW_CONTROLBAR_LAST 的值为 oxE8FF
意思是这个ID范围内的ControlBar都将被Reposition
2.经过上面步骤 已经在对话框上创建了我们家在的菜单资源 然后我们设置每个按钮的位图 通过 CImageList 类 GetToolBarCtrl 函数获得 CToolBarCtrl的一个引用
步骤是 CImageList * p=new CImageList; //定义 CImageList对象
p->Create(30,30,ILC_COLOR32, 0, 13); //创建图像列表
pp->Add(AfxGetApp()->LoadIcon(IDI_ICON13)); //向CImageList对象增加新的图标 pp->Add(AfxGetApp()->LoadIcon(IDI_ICON9));//add 图标
(m_wndToolBar->GetToolBarCtrl()).SetImageList(pp); //设置图像列表 工具栏的 通过工具控件 CToolBarCtrl 控件
3.设置 CToolTipCtrl 就是工具栏上面的浮动提示
CToolTipCtrl *t=new CToolTipCtrl; //在堆中创建一个 CToolTipCtrl控件
t->Create(this); //在本窗体中创建
t->SetMaxTipWidth(100); //设置最大宽度
t->SetTipBkColor(RGB(233,222,232)); //设置背景颜色
t->SetTipTextColor(RGB(22,122,122)); //设置提示的文本颜色
t->AddTool(m_wndToolBar,"导出当前员工在线信息到磁盘",CRect(0,0,20,20),ID_OUTPUT); //每次增加的tip都对一个这一个工具栏按钮的ID
t->AddTool(m_wndToolBar,"清空系统运行时候产生的缓存文件",CRect(0,0,20,20),IDM_CLEAR); //ID就是工具栏按钮ID
t->Activate(true);
(m_wndToolBar->GetToolBarCtrl()).SetToolTips(t); //将TIP增加到 工具栏