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

翻译|其它|编辑:郝浩|2007-07-23 10:42:49.000|阅读 1655 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

第一种:

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();

 

这种方法还可以。

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP