CBitmapButton是从CButton继承而来
CBitmapButton有两种用法,一种是用LoadBitmap,一种是AutoLoad函数
在窗口的客户区创建一个位图按钮的步骤如下:
1. | 为按钮创建1到4个位图。 |
2. | 构造CBitmapButton对象。 |
3. | 调用Create函数创建Windows按钮控件,并把它加到CBitmapButton对象上。 |
4. | 调用成员函数LoadBitmaps加载位图资源。 |
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风格的对话框按钮 |
所以一定注意属性表格这一块