00. 目录

01. 案例概述

本实例实现了工具栏上两个按钮互换位置的功能。运行程序如下图所示选择菜单“查看/改变按钮位置”,程序会将“新建”按钮和“保存”按钮进行位置调换,效果如下图所示。

改变之前
【MFC】可调整按钮位置的工具栏_工具栏

改变之后
【MFC】可调整按钮位置的工具栏_vs2019_02

02. 开发环境

系统环境:Windows 10

开发环境:Visual Studio 2019

03. 关键技术

本实例通过CToolBar 类的SetButtonInfo方法实现,SetButtonInfo方法用来设置工具栏按钮的相关信息,语法如下:

void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );
参数说明:
    nIndex 工具栏上按钮的位置
    nID 工具栏按钮在工程中的资源ID值
    nStyle 工具栏按钮的风格
    iImage 工具栏按钮的图片索引值

04. 程序设计

(1)新建基于单文档视图结构的应用程序。

(2)修改Menu资源IDR_MAINFRAME,在菜单“视图”下新建子菜单,设置ID属性为ID_CHANGE,设置Caption属性为“改变按钮位置”。

(3)在改变按钮位置菜单中添加按键事件处理程序,代码如下:

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_COMMAND(ID_Change, &CMainFrame::OnChange)
END_MESSAGE_MAP()
    

void CMainFrame::OnChange()
{
	// TODO: 在此添加命令处理程序代码
	UINT newId = 0;
	UINT oldId = 0;

	//获取ID
	newId = m_wndToolBar.GetItemID(0);
	oldId = m_wndToolBar.GetItemID(1);

	m_wndToolBar.SetButtonInfo(0, oldId, 0, 1);
	m_wndToolBar.SetButtonInfo(1, newId, 0, 0);

	//重新绘制工具栏
	//m_wndToolBar.Invalidate();
}

05. 秘笈心法

改变工具栏按钮的好处

通过改变工具按钮的位置,来更加方便的进行操作,使最常用的按钮始终保持在最前面,还可以通过更改按钮位置来适应个人的喜好。

06. 源码下载

下载:【MFC】可调整按钮位置的工具栏.rar

07. 附录

参考: 《Visual C++从入门到精通(项目案例版)》