编程论坛
注册
登录
编程论坛
→
VC++/MFC
关于在按钮上加载位图图标
gradual
发布于 2011-11-04 21:32, 1139 次点击
CBitmap bitmap;
bitmap.LoadBitmap("testFounction.ico");
m_BUTTON2.SetBitmap(bitmap);
用这段代码给按钮加载图标,为什么不显示加载的ico?
1 回复
#2
Toomj
2011-11-05 09:45
步骤:
① 从外部导入一个位图或自己创建一个位图作为资源。
② 从资源中载入所要使用的位图。
③ 在要使用位图的按钮上设置位图。
具体实现:
第一步从外部导入一个位图作为资源。
第二步中,利用函数 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);
1