步骤:
① 从外部导入一个位图或自己创建一个位图作为资源。
② 从资源中载入所要使用的位图。
③ 在要使用位图的按钮上设置位图。
具体实现:
第一步从外部导入一个位图作为资源。
第二步中,利用函数 LoadBitmap() 从资源中载入位图。函数 LoadBitmap() 为一个 API 函数,定义如下:
HBITMAP LoadBitmap(
HINSTANCE hInstance, // handle of application instance
LPCTSTR lpBitmapName // address of bitmap resource name
);
所以,为达到载入位图的目的,不仅要定义一个位图句柄 hBitmap:
HBITMAP hBitmap;
而且还要定义一个应用程序实例句柄 hInstance;:
HINSTANCE hInstance;
并调用函数 AfxGetInstanceHandle() 以获得当前的应用程序实例句柄,代码如下:
hInstance = ::AfxGetInstanceHandle();
只有在声明并获得了当前的应用程序句柄后,才能使用以下语句载入位图:
hBitmap = ::LoadBitmap(hInstance,"BMP1");
注意,在函数 LoadBitmap() 中的第二个参数为资源名,而非资源 ID。因为资源名是一个字符串,而资源 ID 则是一个整型量。所以在创建或导入位图后,为该位图资源命名时要加上双引号以表示这是一个资源名。
第三步中,为要使用位图的按钮设置位图。首先是要在使用位图的按钮的 Properties 设置中设置 Bitmap 属性,指明该按钮是一个位图按钮。然后再调用 CButton 类函数 SetBitmap() 为按钮设置位图。代码如下:
// m_BtonBmp 为一个 CButton 类对象。
m_BtonBmp.SetBitmap(hBitmap);
或
pWnd = GetDlgItem(IDC_Check);
pBton = (CButton *) pWnd;
pBton -> SetBitmap(hBitmap);