MFC设计之利用CMFCToolBar添加工具栏(一)

利用CMFCToolBar添加工具栏(一)

一、新建Toolbar

  1. 从资源视图中进去,找到你的工程文件夹,右键选择添加资源,如下所示:
  2. 选择新建一个Toolbar,如下所示:
  3. 建立完成,如下所示:

二、自己画按钮位图(.bmp文件)

  • 这部分自己慢慢摸索吧,我也是画了半天,具体的在图上,我只能帮到这儿了。

三、触发工具栏(Toolbar)

  1. 首先,我们得弄清楚我们要在那里显示我们得工具栏,很多教程都是在mainfrm.cpp中调用,而我的需求不在那里面,我是要让它显示在我设计的一个Dialog中,所以自然我就要我对应的Dialog.cpp中调用,不过在这之前,还得先在这个对应的Dialog.h中添加一个类成员,具体如下:
CMFCToolBar m_toolBar;
  1. 将自己画好的位图保存好,当然这个默认存在你工程文件夹的res下。
  2. 将这个画好的位图添加到资源视图的Bitmap文件夹中,具体操作如下:
  • 导入bitmap,右键Bitmap出现如下图弹框,按照下图选定的进行操作
  • 一定要到工程文件的res目录下去找,如果没有找到自己画的bmp文件,先不要着急,点开下面的文件类型,选择所有文件(*),就能看到自己画的图了。
  • 我的文件夹中本来有四个位图,现在导入后有五个,默认的排序,所以就是5.
  1. 在调用的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功能实现,就放在下一篇文章中说吧。

发布了84 篇原创文章 · 获赞 63 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/103078919
今日推荐