00. 目录
01. 案例概述
本实例实现了工具栏上两个按钮互换位置的功能。运行程序如下图所示选择菜单“查看/改变按钮位置”,程序会将“新建”按钮和“保存”按钮进行位置调换,效果如下图所示。
改变之前
改变之后
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. 源码下载
07. 附录
参考: 《Visual C++从入门到精通(项目案例版)》