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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【数据结构】十字链表

    【数据结构】十字链表介绍了有向图的链式存储结构:十字链。

  • 如何用pycharm编译器打包,最简单的方法[通俗易懂]

    如何用pycharm编译器打包,最简单的方法[通俗易懂]如何用pycharm编译器打包exe,最简单的方法一、找到pycharm上边的位置1.执行之前要确保下载了pyinstaller2.我的是加过了,点击加号二、步骤二1.找到相关位置program:pyinstaller.exe位置进行操作,可以找到你的相关路径2.生成exe代码如下(示例):2.读入数据在你的pycharm写的代码的文件夹里边找到dist,就在里边:生成exe…

  • 谷粒商城项目2——环境搭建、renren-generator逆向生成所有微服务基本CRUD代码[通俗易懂]

    谷粒商城项目2——环境搭建、renren-generator逆向生成所有微服务基本CRUD代码[通俗易懂]续接上文谷粒商城项目1——分布式基础概念、环境搭建_Kaisa..的博客-CSDN博客至此,环境搭建完成了,接下来就是分布式组件了目录二、环境搭建8.人人开源框架搭建(1).克隆项目初始环境(2).创建renren-fast后台管理系统数据库(3).配置renren-fast环境(4).前端环境搭建(5).测试登录9.renren-generator代码生成器(1).根据数据库逆向生成Bean、Mapper等(2).启动renren-generator(3).创建公共微服务模块导入逆向生成代码所需要的各种依

  • Labview 上位机编写

    基于kvaser的Labview上位机编写实现数据接收和发送功能传感器协议解析数据接收以及动态分析诊断服务

  • phpstorm 2021 激活码【中文破解版】

    (phpstorm 2021 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlS32PGH0SQB-eyJsaWN…

  • MSDN 6.0 之 Platform SDK 内容导航

    MSDN 6.0 之 Platform SDK 内容导航MSDN6.0之PlatformSDK内容导航王天平,北京,荣丰20082005年7月3日从头文件说起实际上在每个用C编写的Windows程式的开头都可看到:#includeWINDOWS.H是主要的引入头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:l        WINDEF.H基本类型定义。l        

发表回复

您的电子邮箱地址不会被公开。

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