CButtonBitmap用法总结

来源:互联网 发布:怎么在淘宝开旗舰店 编辑:程序博客网 时间:2024/05/17 23:30

CBitmapButton是从CButton继承而来

CBitmapButton有两种用法,一种是用LoadBitmap,一种是AutoLoad函数

在窗口的客户区创建一个位图按钮的步骤如下:1.为按钮创建1到4个位图。2.构造CBitmapButton对象。3.调用Create函数创建Windows按钮控件,并把它加到CBitmapButton对象上。4.调用成员函数LoadBitmaps加载位图资源。这个函数用法很简单,在Create函数时候,注意加上风格BS_OWNERDRAW,重绘属性,这是使用CBitmapButton按钮必须的

CBitmapButton::LoadBitmaps

BOOL LoadBitmaps(
     LPCTSTR lpszBitmapResource,
     LPCTSTR lpszBitmapResourceSel = NULL,
     LPCTSTR lpszBitmapResourceFocus = NULL,
     LPCTSTR lpszBitmapResourceDisabled = NULL
    );

BOOL LoadBitmaps(
     UINT nIDBitmapResource,
     UINT nIDBitmapResourceSel = 0,
     UINT nIDBitmapResourceFocus = 0,
     UINT nIDBitmapResourceDisabled = 0
    );

在对话框控件中包含位图按钮的步骤如下:1.为按钮创建1到4个位图。2.创建一个对话框模板,其中有一个自定义的按钮放在需要位图按钮的位置。模板中按钮的大小无关紧要。3.把按钮的标题设置为“MYIMAGE”一类的字符串,并为按钮定义一个类似于IDC_MYIMAGE的代号。4.在应用的资源脚本中,分别为每个给该按钮创建的图像一个ID,ID的值为在步骤3中的标题后加上如下的一个字母——U、D、F或X,分别代表正常、按下、获得焦点和禁止存取状态下的按钮。例如,标题设为“MYIMAGE”时,ID就应该是字符串("MYIMAGEU"、"MYIMAGED"、"MYIMAGEF"和"MYIMAGEX")。位图的ID必须用引号括起来,否则资源编辑器就会为资源赋上一个整数值,MFC在加载图像时就会失败。5.在应用的对话框类(从类CDialog继承而来)中加上一个CBitmapButton成员对象。6.在CDialog对象的OnInitDialog例程中调用CBitmapButton对象的AutoLoad函数,参数是按钮的ID和CDialog对象的this指针。

这个函数比较不好用

首先资源ID是以按钮的"CAPTION+U",CAPTION+D",CAPTION+F",CAPTION+X"来命名资源ID的,注意加上双引号

其次注意CBitmapButton说明部分

同的应用对位图有不同的组合应用。如下所示

未按下
按下
获得焦点
禁止存取
应用
类Bitmap
没有设置WS_TABSTOP的按钮
带有所有状态的对话框按钮
设置WS_TABSTOP风格的对话框按钮这里我调了最久的一个BUG就是第二个,由于我只有加载了两幅位图,但是按钮的属性里面有WS_TABSTOP风格,根据表格应该有三幅位图才行,所以我一直都无法显示成功

所以一定注意属性表格这一块




原创粉丝点击