方法一:使用CStatic的成员函数SetBitmap();
void
fnDrawOnStatic1() { CStatic
*
pStatic
=
(CStatic
*
)GetDlgItem(IDC_STATIC_TEST); HBITMAP hBitmap; hBitmap
=
(HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_BK), IMAGE_BITMAP,
0
,
0
, LR_CREATEDIBSECTION);
//
IDB_BMP_BK是位图在RC里的ID
//
SS_BITMAP 装载的是位图,SS_CENTERIMAGE 位图居中显示
pStatic
->
ModifyStyle(
0
,SS_BITMAP
|
SS_CENTERIMAGE);
//
修改 CStatic的样式,这一步很重要
pStatic
->
SetBitmap(hBitmap); }
注:如果使用SetBitmap的话,那么设置CStatic控件的格式时要注意,不能将其文字设置为居中在(即Align Text属性),不然显示不出图片
方法二:使用DC绘图
void
fnDrawStatic2() { CStatic
*
pStatic
=
(CStatic
*
)GetDlgItem(IDC_STATIC_TEST); HBITMAP hBitmap; hBitmap
=
(HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_BK),IMAGE_BITMAP,
0
,
0
, LR_CREATEDIBSECTION);
//
IDB_BMP_BK是位图在RC里的ID
pStatic
->
ModifyStyle(
0
, BS_OWNERDRAW);
//
修改CStatic样式,改成自绘制,这一步很重要
CRect rc; pStatic
->
GetClientRect(
&
rc); BITMAP bm;
//
位图结构体,用于接受位图的信息
HDC hdcImage
=
CreateCompatibleDC(NULL);
//
创建兼容DC
SelectObject(hdcImage, hBitmap);
//
将加载进来的位图句柄选入兼容DC
GetObject(hBitmap,
sizeof
(bm),
&
bm);
//
将位图信息填入BITMAP结构体
StretchBlt(pStatic
->
GetDC()
->
GetSafeHdc(),rc.left,rc.top,rc.Width(),rc.Height(),hdcImage,
0
,
0
,bm.bmWidth,bm.bmHeight,SRCCOPY);
//
拷贝位图到CStatic
DeleteObject(hBitmap);
DeleteDC(hdcImage);}