为按钮控件添加图片的方法

    技术2022-05-11  21

    第一种: Button属性页里Style的Bitmap点上 CBitmap Bitmap; Bitmap.LoadBitmap(IDB_BITMAP1); HBITMAP hBitmap=(HBITMAP)Bitmap.Detach(); CButton *pButton=(CButton*)GetDlgItem(IDCANCEL); pButton->SetBitmap(hBitmap); 感觉效果不是很好。因为图片不会自动拉伸。 第二种: 可以采用CButtonST控件,挺好用的,比MFC的那些封装好用。 第三种: 把button按钮属性设置为ower draw 然后映射onDrawItem消息 在ondraw函数内自己绘制就可以了 void CUi6Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { if(nIDCtl == IDC_HELLO_CFAN) { //绘制按钮框架 UINT uStyle = DFCS_BUTTONPUSH; //是否按下去了? if (lpDrawItemStruct->itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED; CDC dc; dc.Attach(lpDrawItemStruct->hDC); dc.DrawFrameControl(&lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle); //输出文字 dc.SelectObject(&m_Font); dc.SetTextColor(RGB(0, 0, 255)); dc.SetBkMode(TRANSPARENT); CString sText; m_HelloCFan.GetWindowText(sText); dc.TextOut(lpDrawItemStruct->rcItem.left + 20, lpDrawItemStruct->rcItem.top + 20, sText); //是否得到焦点 if(lpDrawItemStruct->itemState & ODS_FOCUS) { //画虚框 CRect rtFocus = lpDrawItemStruct->rcItem; rtFocus.DeflateRect(3, 3); dc.DrawFocusRect(&rtFocus); } return; } CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct); } 第四种: 1,按钮属性 Onwer Drew选上,按钮ID: IDC_BUTTON1 2,定义private变量: CBitmapButton m_button; 3,在初始化里边 m_button.LoadBitmaps(IDB_BITMAP1, IDB_BITMAP2);//IDB_BITMAP1:平时;IDB_BITMAP2:按下 m_button.SubclassDlgItem(IDC_BUTTON1, this); m_button.SizeToContent(); 这种方法还可以。

    最新回复(0)