CStatic::SetBitmap
关联新的位图与该静态控件。
HBITMAP SetBitmap(
HBITMAP hBitmap
);
参数
- hBitmap
在静态控件将绘制位图的句柄。
返回值
以前与该静态控件位图的句柄或 NULL,如果位图没有与该静态控件。
备注
位图在静态控件将自动绘制。 默认情况下,它在左上角要绘制,并且该静态控件将调整到位图的大小。
您可以使用各种窗口和静态控件样式,包括:
SS_BITMAP 使用此样式始终位图的。
SS_CENTERIMAGE 使用焦点在静态控件的图像。 如果图像比该静态控件,它将剪辑。 如果其小于该静态控件时,该图像周围的空白将由像素的颜色填充该位图的左上角。
MFC 提供选件类 CBitmap,您可以使用时必须执行更多使用位图图像比调用 Win32 函数 LoadBitmap。 CBitmap,包含一个 GDI 对象,在与 CStatic协作下是,通常是 CWnd 选件类用于显示图形对象用作静态控件。
CImage 是使您可以更轻松地与设备无关的位图 (DIB) 使用的 ATL/MFC 选件类。 有关更多信息,请参见CImage Class。
- 典型用法是为 CStatic::SetBitmap 由 CBitmap 或 CImage 对象的 HBITMAP 运算符返回的 GDI 对象。 若要执行此操作的代码类似于下面一行。
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));
下面的示例创建堆中的两 CStatic 对象。 使用 CImage::Load,它将系统位图然后加载一个使用 CBitmap::LoadOEMBitmap 和其他从文件。
示例
// Code such as this could be placed in the OnInitDialog callback.
// It creates two bitmap static controls on the heap, using members
// _m_pCStatic_A and _m_pCStatic_B to identify them so that they can
// be destroyed when no longer needed.
CBitmap CBmp;
CImage CImg;
// Create a child bitmap static control and load it from a CBitmap object.
_m_pCStatic_A = new CStatic;
_m_pCStatic_A->Create(_T("A bitmap static control (A)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(16,16,64,64),
pParentWnd);
CBmp.LoadOEMBitmap(OBM_CLOSE); // Loads one of the default Windows bitmaps
_m_pCStatic_A->SetBitmap( HBITMAP(CBmp) );
_m_pCStatic_A->ShowWindow( SW_SHOW );
// Create a child bitmap static control and load it from a CImage object.
_m_pCStatic_B = new CStatic;
_m_pCStatic_B->Create(_T("A bitmap static control (B)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(90,16,138,64),
pParentWnd);
CImg.Load( _T("test.png") );
if( _m_pCStatic_B->GetBitmap( ) == NULL )
_m_pCStatic_B->SetBitmap( HBITMAP(CImg) );
/* Then, later:
delete( _m_pCStatic_A );
delete( _m_pCStatic_B );
*/
要求
标头:afxwin.h