您的位置:首页 > 其它

MFC改变按钮的颜色,方法简单,实用

2014-12-23 15:35 405 查看
手动添加消息映射的方法实现改变按钮的颜色,不必创建新的类!

1.将button修改为owner draw 类型

2.重载OnDrawItem函数,并对其改写

在适当的位置添加下面的语句

afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);

ON_WM_DRAWITEM()

3.在消息响应函数里添加如下代码:

void CXXX::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)

{

CDC dc;

dc.Attach(lpDrawItemStruct->hDC);

ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

CString strText;

((CButton *)GetDlgItem(nIDCtl))->GetWindowText(strText);

SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);

//if (lpDrawItemStruct->itemState&ODS_SELECTED)

{

CBrush brush(RGB(255, 0, 0));

dc.FillRect(&(lpDrawItemStruct->rcItem), &brush);

DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),

&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);

SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);

}

dc.Detach();

}

可以参考:http://blog.sina.com.cn/s/blog_65cab32d01013uad.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: