改变Push Button背景色

改变Push Button背景色

ID:38342634

大小:17.89 KB

页数:3页

时间:2019-06-10

改变Push Button背景色_第1页
改变Push Button背景色_第2页
改变Push Button背景色_第3页
资源描述:

《改变Push Button背景色》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、改变PushButton背景色在Windows中Edit,StaticBox的背景色都可以通过处理WM_CTLCOLOR消息来改变,但PushButton却不行。唯一的方法是使用OwnerDraw风格的按钮。本文讲述的方法是使用CButton的派生类。classCCButton:publicCButton{DECLARE_DYNAMIC(CCButton)public:CCButton();virtual~CCButton();BOOLCCButton::Attach(constUINTnID,CWnd*pParent)protected:virtualvoidDrawItem(LP

2、DRAWITEMSTRUCTlpDIS);//必需重载的函数public:COLORREFm_fg,m_bg,m_disabled_fg,m_disabled_bg;//四种颜色分别为文字,背景,失效时文字,失效时背景};实现DrawItemvoidCCButton::DrawItem(LPDRAWITEMSTRUCTlpDIS){CDC*pDC=CDC::FromHandle(lpDIS->hDC);//???????DCUINTstate=lpDIS->itemState;//得到状态CRectfocusRect,btnRect;//两个矩形,表示得当输入焦点时的虚线矩形和按钮矩

3、形focusRect.CopyRect(&lpDIS->rcItem);btnRect.CopyRect(&lpDIS->rcItem);////调整虚线矩形//focusRect.left+=4;focusRect.right-=4;focusRect.top+=4;focusRect.bottom-=4;////得当Button上文字//constintbufSize=512;TCHARbuffer[bufSize];GetWindowText(buffer,bufSize);//使用m_fg,m_bg颜色利用Draw3dRect(...)绘制按钮边框//FillRect(...

4、)填充按钮内部//DrawText(...)绘制文字//根据当前状态调整显示//if(state&ODS_FOCUS){.........//得到输入焦点,通过focusRect画虚线if(state&ODS_SELECTED){.....//被按下,绘制下陷边框}}elseif(state&ODS_DISABLED){//失效,通过m_disabled_fg,m_disabled_bg重绘按钮内部}}CCButton是CButton派生类,具有CButton的全部成员函数,但在创建时需要使用BS_OWNERDRAW风格。如果按钮不是动态生成,使用Attach函数使CCButton代

5、替原来按钮的窗口过程。BOOLCCButton::Attach(constUINTnID,CWnd*pParent){GetDlgItem(nID)->ModifyStyle(0,BS_OWNERDRAW,0);if(!SubclassDlgItem(nID,pParent))returnFALSE;returnTRUE;}如在一对话框的InitDialog(...)中加入下面几行{//假定m_cbBtn为成员变量IDC_BUTTON1为一按钮ID值m_cbBtn.Attach(IDC_BUTTON1,this);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。