VC新手之路02_如何为按钮添加图片01

  OK,昨天下午到今天上午忙活了这么久总算没白费,当然效率很低,不过一步一步来,未来是美好的。。。呵呵。

  言归正传,在MFC中让button显示图片是必不可少的,最简单的方法就是利用MFC提供的CButton类,方法如下:

  首先向工程中导入一个图标资源,然后打开按钮控件的属性窗口,选择Icon属性,接下来为控件关联一个CButton的类,使用CButton的SetIcon方法来实现:

  m_button.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));// 设置图标

 

  这种方法比较基础也很实用,不过考虑到界面设计中要做许多动态的显示,比如鼠标移动到按钮上时按钮图片做出相应改变之类的就不好实现了,因此我查了下相关资料,发现还有个CBtton的扩展类CButtonST类,下面介绍下CButtonST类的做法。比较详细的教程在我另外一篇介绍CButtonST类的文章中,这里只把我按照教程中的方法实现的过程简单介绍下,其中遇到一些可能别人看来很低级自己却老爱犯的一些错误,呵呵,谁叫咱半路出家呢。

  一步一步来,首先用CButtonST实现上面的例子,然后再进行下一步的扩展。

  先使用CButtonST类实现在按钮上显示图片:

  首先首先向工程中导入一个图标资源,然后打开按钮控件的属性窗口,选择Icon属性,接下来为控件关联一个CButton的类,比如CButton的类名为m_btn,接下来找到H文件中添加类名的地方,将CButton m_btn改为CButtonST m_btn,然后在初始化程序段里加入下面代码:

            m_btn.SetIcon(IDI_ICON1);//设置图标
            m_btn.SetFlat(FALSE);//这句去掉的话button就是平面效果

OK,大功告成!有两点要注意,最好是先用MFC控件关联CButton类,然后再自己替换,如果自己添加的话细节没注意或是少了点什么很容易出问题,还有我另一篇文章中有这个例子,不过如果是按照上面说的方法来做的话需要把

m_btn.SubclassDlgItem(IDC_BUTTON1,this);
注释掉,因为你的按钮是用资源创建的,并且通过classWizard已经和m_btn绑定了关系(这个操作相当于SubclassDlgItem),所以你要是再SubclassDlgItem一次就会出错。

 

 

    接下来我们在上面的基础上实现button图标的动态变化,当鼠标移动到button上方时图标变为两位一种状态。

   要实现上面的功能就需要为不同状态的button准备不同的图标,以上面为例需要两个图标,正常情况下显示一张图标,鼠标移动到button上时显示另外一张图标,额。。。我好像有点啰嗦了。

   两个图标分别为IDI_ICON1 和 IDI_ICON2,实现语句为:

   m_btn.SetIcon(IDI_ICON2,IDI_ICON1);//IDI_ICON2为鼠标移动到button上方时的显示状态。

   很简单吧,的确很简单,接下来实现灰度的变化,也就是正常情况下图标为灰色,当鼠标移动到button上时图标变为彩色。

   很简单:m_btn.SetIcon(IDI_ICON1, (int)BTNST_AUTO_GRAY);

   算了,不写了越写越觉得没什么技术含量,其他的效果在另外一篇介绍CButtonST的文章中介绍得很详细,就不多说了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值