15.11 使用CBitmapButton类
MFC中,默认的按钮控件是显示文字的,使用CBitmapButton可以使得按钮以图形化的形式显示出来。
//VC98\MFC\Include\AFXEXT.H,省略部分代码 class CBitmapButton : public CButton { DECLARE_DYNAMIC(CBitmapButton) public: // Construction CBitmapButton();
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); BOOL AutoLoad(UINT nID, CWnd* pParent); protected: // all bitmaps must be the same size CBitmap m_bitmap; // normal image (REQUIRED) CBitmap m_bitmapSel; // selected image (OPTIONAL) CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL) CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS); }; |
CBitmapButton加载4个位图(使用LoadBitmaps函数和AutoLoad函数),分别用于显示按钮的正常状态、按下时的状态、具有输入焦点时的状态、不可用时的状态,下面举例说明其用法。步骤如下:
(1)创建基于对话框的MFC应用程序。
(2)在主对话框中放入一个Button空间,调整适当大小,为其添加CButton类型变量m_btnBitmap,如图15.7所示。
(3)设置该按钮风格为Owner draw,如图15.8所示。
 |
| 图15.7 对话框布局 |
 |
| 图15.8 设置Owner draw风格 |
(4)在资源视图中创建或导入4副位图,分别设置ID为IDB_BITMAP1、IDB_BITMAP2、IDB_BITMAP3、IDB_BITMAP4,注意这4副位图的大小必须相同并和按钮的大小一致,如图15.9所示。
(5)修改m_btnBitmap类型为CBitmapButton。
(6)修改主对话框的OnInitDialog函数,添加如下代码:
BOOL CMFCDlg::OnInitDialog() { CDialog::OnInitDialog(); // 省略相关代码 // 加载图片 m_btnBitmap.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4); return TRUE; // return TRUE unless you set the focus to a control } |
(7)按Ctrl+F5键编译并运行程序,效果如图15.10所示。
 |
| 图15.9 IDB_BITMAP2示意图 |
 |
| 图15.10 CBitmapButton按钮效果图 |
【责任编辑:
夏书 TEL:(010)68476606】