利用CMFCToolBar添加工具栏(一)
一、新建Toolbar
- 从资源视图中进去,找到你的工程文件夹,右键选择添加资源,如下所示:
- 选择新建一个Toolbar,如下所示:
- 建立完成,如下所示:
二、自己画按钮位图(.bmp文件)
- 这部分自己慢慢摸索吧,我也是画了半天,具体的在图上,我只能帮到这儿了。
三、触发工具栏(Toolbar)
- 首先,我们得弄清楚我们要在那里显示我们得工具栏,很多教程都是在mainfrm.cpp中调用,而我的需求不在那里面,我是要让它显示在我设计的一个Dialog中,所以自然我就要我对应的Dialog.cpp中调用,不过在这之前,还得先在这个对应的Dialog.h中添加一个类成员,具体如下:
CMFCToolBar m_toolBar;
- 将自己画好的位图保存好,当然这个默认存在你工程文件夹的res下。
- 将这个画好的位图添加到资源视图的Bitmap文件夹中,具体操作如下:
- 导入bitmap,右键Bitmap出现如下图弹框,按照下图选定的进行操作
- 一定要到工程文件的res目录下去找,如果没有找到自己画的bmp文件,先不要着急,点开下面的文件类型,选择所有文件(*),就能看到自己画的图了。
- 我的文件夹中本来有四个位图,现在导入后有五个,默认的排序,所以就是5.
- 在调用的Dialog.cpp中实现代码,我是放在我的初始化的函数里面调用的,具体代码如下:
m_toolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_toolBar.LoadToolBar(IDR_TOOLBAR1, 0, 0, TRUE, 0, 0, IDB_BITMAP5);
m_toolBar.SetRouteCommandsViaFrame(FALSE);//设置消息以对话框方式传递
//根据对话框大小调整工具栏 包含无菜单位置
GetClientRect(rect);
if (m_toolBar.GetSafeHwnd() != NULL)
{
int cyTlb = m_toolBar.CalcFixedLayout(FALSE, TRUE).cy;
m_toolBar.SetWindowPos(NULL, rect.left, rect.top + 2, rect.Width(),
cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
}
m_toolBar.AdjustSizeImmediate();//根据按钮大小调整工具栏
- 代码中
m_toolBar
就是之前在.h中定义的成员,m_toolBar.LoadToolBar(IDR_TOOLBAR1, 0, 0, TRUE, 0, 0, IDB_BITMAP5);
中的IDB_BITMAP5
便是我之前导入的位图了。
四、显示结果
到这里,工具栏就实现好了,工具栏的button功能实现,就放在下一篇文章中说吧。