CToolBar与CImageList合用,达到360的标题栏的效果

该博客介绍了如何结合CToolBar和CImageList来创建类似360软件的标题栏效果,通过添加图标响应函数事件,当点击每个图标时,会向应用发送图标ID消息。为了处理这些消息,需要添加消息响应,使用ON_COMMAND_RANGE宏来为所有图标ID设置事件处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义两个全局变量:
CToolBar m_toolBar;
CImageList m_imageList;
在oninitial函数在加上如下代码:

 //create toolbar
	m_toolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP);
//创建初始化CImageList对象
	m_imageList.Create(32,32,ILC_COLOR24 |ILC_MASK,1,1);
	m_imageList.Add(::LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON1)));
	m_imageList.Add(theApp.LoadIconW(IDI_ICON2));
	m_imageList.Add(AfxGetApp()->LoadIconW(IDI_ICON3));
//设置ToolBar 为image
	m_toolBar.GetToolBarCtrl().SetImageList(&m_imageList);//鼠标没有移图标上的显示效果
	m_toolBar.GetToolBarCtrl().SetHotImageList(&m_imageList);//鼠标移图标上,显示效果

	static UINT arryBar[4];
	for(int i=0;i<4;i++)
	{
		if(i==1)
			arryBar[i]=ID_SEPARATOR;
		else
			arryBar[i]=WM_BARMSG+i;
	}
	m_toolBar.SetButtons(arryBar,4);//为button加上ID;

	m_toolBar.SetButtonText(0, _T("New"));
	m_toolBar.SetButtonText(2, _T("Save"));
	m_toolBar.SetButtonText(3, _T("Cut"));

	m_toolBar.SetSizes(CSize(40,40),CSize(32,32));//重新设置button大小
	m_toolBar.EnableToolTips(TRUE);

	RepositionBars(  0,   0xffff,   0);//跟随主窗口调整大小
可以得到如下效果图: 

添加图标响应函事件:

点击每个图标,都会向应用程序发送一个图标ID号的消息

所以添加消息响应,与一般的消息响应是一样的,也是要添加三处:

void CTest4Dlg::OnBtnBarID(UINT ID)

    afx_msg void OnBtnBarID(UINT ID);

    ON_COMMAND_RANGE(WM_BARMSG,WM_BARMSG+4,OnBtnBarID)

只不过,要注意一下,因为每个一个图标有一个ID,所以为所以图标添加响应,应该用:ON_COMMAND_RANGE





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值