如何定制自己的扩展类

如何定制自己的扩展类

ID:5281781

大小:187.70 KB

页数:6页

时间:2017-12-07

如何定制自己的扩展类_第1页
如何定制自己的扩展类_第2页
如何定制自己的扩展类_第3页
如何定制自己的扩展类_第4页
如何定制自己的扩展类_第5页
资源描述:

《如何定制自己的扩展类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何定制自己的扩展类做软件难免为自己写一些类之类的,那么怎么定制自己的开发类呢,下面我给大家说一说吧,VC提供了一个类的向导程序,在那里我们可以快速建立自己的扩展类,这里有2中方式可以打开类的向导第一:直接快捷键CTRL+W第二:insert->NewClass说明CTRL+w弹出的是类向导,你还的点击右边的“AddClass…”->”New”这个按钮,这时出现如下图,在这里你就可以添加扩展类,如下图这里我们来举个例子,我们添加一个CEDIT的扩展类,如下图在这个里面我们就可以任意改变文本框的功能和效果,你想要怎么样就怎么样,你可以为所欲为,只要你

2、有想象力,下面我们改变一下,例如我们打算把编辑框的背景色改变(当然了还有其他的方法也是可以实现的),这些代码的添加几乎全是在我们定制的扩展类中添加,(下面是我节选的一段代码,大家可以研究一下)步骤一:在CEditEx中添私有成员变量CBrushm_EdtBrush;//编辑框改变后刷子的颜色CStringm_str;//编辑框的文本内容COLORREFm_CurBackColor;//编辑框当前的颜色步骤二:添加成员函数添加两个公有类型的成员函数:目的为了提供一个接口public:voidSetControlFocus();voidSetBkGrn

3、dColor();其定义如下:voidCEditEx::SetControlFocus(){//将变量m_CurBackColor的值设为黄色m_CurBackColor=RGB(255,255,0);}voidCEditEx::SetBkGrndColor(){//删除旧的刷子m_EdtBrush.DeleteObject();//创建一个m_CurBackColor颜色的刷子m_EdtBrush.CreateSolidBrush(m_CurBackColor);CDC*pDC=GetDC();//设置文字显示模式,OPAQUE为独占模式pDC-

4、>SetBkMode(OPAQUE);//设置文字的背景颜色pDC->SetBkColor(m_CurBackColor);//选择刷子pDC->SelectObject(&m_EdtBrush);CRectrc;GetClientRect(&rc);ScreenToClient(&rc);//绘制一个矩形pDC->Rectangle(0,0,rc.Width(),rc.Height());//设置文本颜色pDC->SetTextColor(RGB(0,0,0,));//输出文本pDC->TextOut(2,2,m_str.GetBuffer(m_

5、str.GetLength()));}2)重载虚拟函数OnChildNotify():将OnChildNotify()函数的定义为如下形式:BOOLCEditEx::OnChildNotify(UINTmessage,WPARAMwParam,LPARAMlParam,LRESULT*pLResult){//WeonlywanttohandleWM_CTLCOLOREDITmessages-32bitonly//如果消息为WM_CTLCOLOREDIT,则返回基类的OnChildNotify函数if(message!=WM_CTLCOLOREDIT

6、){returnCEdit::OnChildNotify(message,wParam,lParam,pLResult);}HDChdcChild=(HDC)wParam;//设置文字颜色为黑色,也可以修改为其他颜色SetTextColor(hdcChild,RGB(0,0,0));//设置背景颜色为m_CurBackColor颜色SetBkColor(hdcChild,m_CurBackColor);returnTRUE;}3)添加三个windows消息处理函数:ON_WM_SETFOCUS、ON_WM_KILLFOCUS、ON_WM_PAINT

7、,主要是用来处理编辑框获得焦点和失去焦点的颜色改变效果。将这三个函数定义为如下形式://当编辑框获得焦点时改变背景颜色为黄色voidCEditEx::OnSetFocus(CWnd*pOldWnd){CEdit::OnSetFocus(pOldWnd);m_CurBackColor=RGB(255,255,0);Invalidate(FALSE);}//当编辑框失去焦点时改变背景颜色为白色voidCEditEx::OnKillFocus(CWnd*pNewWnd){CEdit::OnKillFocus(pNewWnd);//设置背景颜色为白色,也可

8、以设为其他颜色m_CurBackColor=RGB(255,255,255);Invalidate(FALSE);}//重

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

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

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