首页 > CBitmapButton的使用(转)

CBitmapButton的使用(转)

CBitmapButton的使用

 

CBitmapButton作为MFC的控件类,并不为很多人所使用,因为现在网上遍布着从CButton派生的各种各样的按钮类,其中最为著名的就是CButtonST类了。但是最近在CSDN上看到几个问题都是使用CBitmapButton类,但是由于使用错误、不当而造成程序崩溃或者错误的。所以总结一下CBitmapButton类的使用,希望能帮助一些初学者。 可以参考MSDN自带的例子“CTRLTEST”学习CBitmapButton的用法。

个人总结如下:

 1、在资源编辑的时候选中按钮的Owner draw即可,不需要选择Bitmap属性!

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

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

3-2、或者是使用CBitmapButton::AutoLoad函数关联到想要的按钮。

 

需要注意:

A、之前不能使用CBitmapButton::LoadBitmaps装载各种状态的图片,否则会出错。

B、AutoLoad函数完成的关联和改变按钮大小的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的一部分。

转载于:https://www.cnblogs.com/zhuchao/archive/2010/07/29/1787844.html

更多相关:

  • 作废 等待重写   名称 功能取值赋值备注Button按钮多用来触发点击事件   CheckBox多选按钮    CheckedListBox多选按钮组    ComboBox下拉列表    DateTimePicker指定的格式选择时间日期    Lable说明性文字控件    LinkLable超链接类型文件控件    List...

  • 大家都知道在ISV.CONFIG里可以添加按钮,然后添加按钮事件,比如下面:             

  • 在2014年的双11即将来临之季,爱编程小编为大家整理10款纯css3实现的按钮。希望这对坚守在前端的码农们有所帮助。亲,如果你有好的资源也可在本文留言,让从事编码的程序员们抱团。工作更轻松。 No1.一款基于css3非常实用的鼠标悬停特效 这款特效,当鼠标经过时候一个半透明的遮罩层倒下来。效果很好,而且是纯css3实现的,代码很少...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...