MFC的图片按钮

MFC的图片按钮

利用CBitmapButton类实现位图按钮的两种方法 利用CBitmapButton类实现位图按钮的两种方法:
方法一:
1、在资源编辑的时候选中按钮的 Owner draw 属性,不需要选择 Bitmap 属性.
按钮右键–>Styles–>Owner draw

2、在程序中定义一个CBitmapButton成员变量。
注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,
这么做并不能将按钮直接映射为CBitmapButton类的对象,反而会出现初始化错误

3、使用CBitmapButton::LoadBitmaps装载各种状态的图片,
使用CBitmapButton::SubclassDlgItem关联到想要的按钮,
使用CBitmapButton::SizeToContent函数使按钮适合图片大小。
注意Loadbitmaps一定要在关联到按钮之前进行!

附:添加资源Bitmap的方法:Insert菜单–>Resource –>Resource type:Bitmap–>Import, 
之后选择所需的图片就可以了

方法一的例子:
首先,选中按钮的owner Draw属性,在资源中加载两副*.bmp格式的位图,
然后在对话框类中加入:

CBitmapButton m_btnX1;//必须放在函数外面才能正常实现 BOOL CXXXXXXX::OnInitDialog() { CDialog::OnInitDialog(); m_btnX1.LoadBitmaps(IDB_XXXX_UP,IDB_XXXX_DOWN);//这里是两副位图,鼠标按下和弹起,                                                //  也可以只加一个ID资源; m_btnX1.SubclassDlgItem(IDC_DASEN_X1,this); m_btnX1.SizeToContent(); }

方法二:使用CBitmapButton::AutoLoad函数关联到想要的按钮
需要注意:
A、使用CBitmapButton::AutoLoad函数之前不能使用CBitmapButton::LoadBitmaps装载
各种状态的图片,否则会出错。
B、AutoLoad函数完成关联和改变按钮大小的功能。类似于上面CBitmapButton::SubclassDlgItem
和CBitmapButton::SizeToContent函数的功能。
C、CBitmapButton::AutoLoad使用的位图是默认资源ID的,即它会自动装载相关资源位图。
位图的资源ID格式为:
“按钮Caption+U”、”按钮Caption+D”、”按钮Caption+F”、”按钮Caption+X”,
分别代表Up、Down、Focus、Disable状态。
如资源编辑时,希望关联的按钮的Caption为Test,
那么其默认装载的位图资源的ID为:”TestU”/”TestD”/”TestF”/”TestX”,
注意分号””也是其ID的一部分。
方法二例子:
首先,选中Caption为:”myBitmapButton”按钮的owner Draw属性
其次,添加两个位图资源,并修改其ID分别为:”myBitmapButtonU”和”myBitmapButtonD”,这里只添加两个位图
然后在对话框类中加入:

CBitmapButton m_btnX1;//必须放在函数外面才能正常实现  BOOL CXXXXXXX::OnInitDialog()  {  CDialog::OnInitDialog();    m_btnX1.AutoLoad(IDC_BUTTON1,this);//ID为IDC_BUTTON1的按钮的Caption为:myBitmapButton  }

至此两种方法就都结束了。

原文地址:http://yq1518602434.blog.163.com/blog/static/202937084201252011141376/

转载于:https://my.oschina.net/leixiaohua1020/blog/302278

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109752.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中jvm面试题_mysql基础面试题及答案

    java中jvm面试题_mysql基础面试题及答案Jvm面试题及答案(Jvm面试题大全带答案)发现网上很多Jvm面试题及答案整理都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,有大量经典的Jvm面试题以及答案,包含Jvm语言常见面试题、面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!如果不背Jvm面试题的答案,肯定面试会挂!这套Jvm面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个面试手册,是PDF版的1、ZGC了解吗?JDK11中加入的具有实验性质的低延迟垃圾收集器,目标是尽可能在不影响吞吐

    2022年8月28日
    5
  • ubuntu16.04 安装 Eric6「建议收藏」

    从安装qt,到安装qtpy,到安装Eric6,这是一个很痛苦的过程。总是会有一大段的错误,然后在网上各种搜索,然后去改,然后还是有新的错误,又去找答案,一直重复,我都快崩溃了。最后,终于,找到这一篇博客:http://blog.csdn.net/suxiang198/article/details/52042526。这篇博客解决了大部分坑,不过到后面部分还是出现了问题,安装不上去。最后,终于在E

    2022年4月8日
    50
  • 华为裁员34岁以上程序员,90后的中年危机,即将在职场引爆

    华为裁员34岁以上程序员,90后的中年危机,即将在职场引爆去年,一条职场潜规则走红网络:不要大声责骂年轻人,他们会立刻辞职的,但是你可以往死里骂那些中年人,尤其是有车有房有娃的那些。真实感受到程序员的中年危机在中国,除了从BAT出来的牛人,一般经理层到35岁,总监层到40岁,往后机会真的会少很多了,不是你能不能干的问题,是别人不给机会你干的问题,不要想着什么外国人可以干到50、60,你就要死磕到底,希望后来者早有打算,不要到最后尴尬的时…

    2022年7月17日
    44
  • [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏

    [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏

    2022年1月2日
    69
  • C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

    C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

    2021年11月23日
    46
  • Rpc接口测试_Python接口测试

    Rpc接口测试_Python接口测试本发明涉及RPC(RemoteProcedureCallProtocol,远程过程调用协议,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议)接口测试领域,具体涉及一种RPC接口测试方法及系统。背景技术:接口测试(对系统组件间接口进行测试)主要用于检测外部系统与系统(包括各个子系统)之间的交互点,接口测试重点为检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系…

    2022年10月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号