CButtonST中菜单按钮的构建

前言:基于MFC based DLG实现,环境:VC++ 6.0

这只是CButtonST_demo中的一个小例子的具体讲解,这个DEMO实现了按钮所需要的所有功能,大家有兴趣可以去研究源码,地址:

http://download.csdn.net/detail/harvic880925/4409160

正文:

新建一个MFC based DLG的工程,命名为:TryMenu_1

实现效果如图:

一、工具条的创建与加载

1、首先资源视图中新建一个Menu资源,如图:

其中整个Menu资源的ID号为:IDR_MENU1,第一个菜单项“one”的ID号为:IDM_1,第二个菜单项“two”的ID号为:“IDM_2

2、用工具条制作工具制作一个工具条,制作好的工具条文件如图:

工具条制作工具的下载地址:http://download.csdn.net/detail/harvic880925/4582596

然后在资源视图中新建一个ToolBar资源,保存之后,到工程下的res文件夹下,找到生成的bmp文件,然后用我们的toolbar图像覆盖这个图像,这里要注意一点是,如果我们制作的toolbar不是16*16的,在VC++中将会打不开,解决办法也很简单,保存成16*16的图像重新覆盖就可以了。

VC++中将工具栏中第一个图的ID设为:IDM_1,第二个设置为:IDM_2;即跟菜单项设置为相同的ID

3、加载btton中显示的位图图像,ID设为:IDI_ICON1;

二、按钮创建

1、将Btn.h,Btn.cpp,BCMenu.h,BCMenu.cpp全部加载到工程中,并在CTryMenu_1Dlg.h中添加

#include "BtnST.h"
#include "BCMenu.h"

2、在DLG中添加一个按钮控件,并关联一个变量,命名为:m_menuBtn,这时classWizard会在CTryMenu_1Dlg头文件中,为我们添加上一行代码:

CButton	m_menuBtn;

这时我们将这行代码注释掉,改为

CButtonST	m_menuBtn;

3、在CTryMenu_1DlgOnInitDlg()中添加如下代码:

	this->m_menuBtn.SetMenu(IDR_MENU1,this->m_hWnd,true,IDR_TOOLBAR1);
	this->m_menuBtn.SetIcon(IDI_ICON1);
	this->m_menuBtn.SetFlat(TRUE);

至此实现了,所有开头所示的功能;

标注:该工程在VS2008中编译不会通过,总是在VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS,nm.cbSize,&nm,0));这句产生异常

解决办法是:在BCMenu.cpp中查找nm.cbSize = sizeof (NONCLIENTMETRICS);将所有的这条语句改为:nm.cbSize = sizeof (NONCLIENTMETRICS)-sizeof(nm.iPaddedBorderWidth);就可以成功编译了。

源码地址:

 http://download.csdn.net/detail/harvic880925/4582837

代码不收分,仅供交流,有需要的朋友可以下载! 

本文原创,如需转载请标明出处哦!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值