EVC下自绘按钮实现

EVC下自绘按钮实现

ID:40537497

大小:326.73 KB

页数:20页

时间:2019-08-04

EVC下自绘按钮实现_第1页
EVC下自绘按钮实现_第2页
EVC下自绘按钮实现_第3页
EVC下自绘按钮实现_第4页
EVC下自绘按钮实现_第5页
资源描述:

《EVC下自绘按钮实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、EVC下自绘按钮实现按钮这个控件在软件中使用是非常广泛的,特别是基于MFC开发,按钮提供了很好的便捷。但是在eVC下的按钮显示效果是非常土的,且背景颜色不好改。如果裁系统的时候将XP风格裁进去的话,默认按钮效果会好一些,但是背景颜色不好控制,在ce平台下,没有鼠标是很正常的,带XP风格的CE系统按钮提示不够明显,这个时候就需要自绘按钮了。首先,先建立一个基于CWnd的类,如:CMyButton:publicCWnd1、添加成员变量:CDCm_dcBack;CBitmapm_bmpBack;//背景COLORR

2、EFm_clNorBack;//正常时背景颜色COLORREFm_clFocBack;//设上焦点时背景颜色COLORREFm_clNorText;COLORREFm_clFocText;boolm_bLastState;//最后一次状态,true=焦点CStringm_strTitleInfo;//按钮上字符2、添加成员函数:voidInitMyButton();//初始化按钮voidDrawBackForNor();//默认voidDrawBackForFoc();//按下去voidDrawBackFor

3、Mid();//中间BOOLCreateBTN(LPCTSTRlpszWindowName,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID,LPDealWithBTNlpDealWithBTN=NULL);//创建voidSetWindowText(LPCTSTRlpszString);//重载函数BOOLEnableWindow(BOOLbEnable=TRUE);//重载函数3、在View里添加消息:如果考虑到右键效果,可以参考LBUTTONDOWN

4、()添加ON_WM_SETFOCUS()ON_WM_KILLFOCUS()ON_WM_PAINT()ON_WM_LBUTTONDOWN()ON_WM_ENABLE()上面的工作已经将基本工作完成了。接下来就是完成相应的代码了:voidCMyButton::OnPaint()...{//CPaintDCdc(this);//devicecontextforpainting//TODO:AddyourmessagehandlercodehereCPaintDCdc(this);//devicecontextfor

5、painting//TODO:AddyourmessagehandlercodehereCRectrectClient;GetClientRect(rectClient);CDCmemDC;CBitmapmemBitmap;CBitmap*oldBitmap;memDC.CreateCompatibleDC(&dc);memBitmap.CreateCompatibleBitmap(&dc,rectClient.Width(),rectClient.Height());oldBitmap=(CBitmap*)

6、memDC.SelectObject(&memBitmap);//将m_dcCoor和m_dcLine绘制到控件上if(memDC.GetSafeHdc()!=NULL)...{memDC.BitBlt(0,0,rectClient.Width(),rectClient.Height(),&m_dcBack,0,0,SRCCOPY);dc.BitBlt(0,0,rectClient.Width(),rectClient.Height(),&memDC,0,0,SRCCOPY);}memDC.SelectObj

7、ect(oldBitmap);//删除内存位图GDI对象memBitmap.DeleteObject();//删除内存绘图环境memDC.DeleteDC();//DonotcallCWnd::OnPaint()forpaintingmessages}BOOLCMyButton::CreateBTN(LPCTSTRlpszWindowName,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID,LPDealWithBTNlpDealWithBTN/**//*

8、=NULL*/)...{//TODO:Addyourspecializedcodehereand/orcallthebaseclassBOOLbresult;//注册窗体类staticCStringclassName=AfxRegisterWndClass(CS_HREDRAW

9、CS_VREDRAW);//创建窗体类bresult=CWnd::CreateEx(NULL,className,NULL

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

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

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