关于CButtonST按钮设置不可用时设置按钮图标

VC界面美化,希望做出漂亮的按钮,毋庸置疑,首选CButtonST类。而美化按钮一般采用位图或图标的。

采用这种按钮,很多时候,我们希望按钮按下时能够变为另一种状态。比如说,我现在有一个播放按钮,未按下时为蓝色,按下之后变为灰色。

如下图所示

将两个图标导入,蓝色为icon1,灰色为icon2.

首先想到的方法是button.Enable(FALSE); 但是用这种方法出现的结果是按钮直接变灰,不再显示图片。如下图所示。

可见这种方法并不能实现我们期望的功能。


在button.Enable(FALSE);之后应该显示变灰的图标。
因此在上个语句之后跟button.SetIcon(IDI_ICON2),会发现,依然无法实现。

追根溯源,应该在CButtonST类中找原因。

如果按钮是导入到图标,对BtnST.cpp中的代码DrawItem函数,做简单的修改,如下:

// Draw the icon
    if (m_csIcons[0].hIcon)
    {
        DrawTheIcon(pDC, !sTitle.IsEmpty(), &lpDIS->rcItem, &captionRect, m_bIsPressed, m_bIsDisabled);
    }

改为
// Draw the icon
    if (m_csIcons[0].hIcon)
    {
        DrawTheIcon(pDC, !sTitle.IsEmpty(), &lpDIS->rcItem, &captionRect, m_bIsPressed, FALSE/*m_bIsDisabled*/);
    }

如果按钮是位图,同理,更改下一句的相应内容。

在按钮的对应代码中加入:
button.SetIcon(IDI_ICON2);
button.EnableWindow(FALSE);

效果如下图所示:

达到预期效果~ 相关范例程序请参考:http://download.csdn.net/detail/zj0789/6540317

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值