1、MFC的基本层次结构的基本层次结构l见见MSDN:MFC Hierarchy Char第1页/共16页一、文本输出一、文本输出l设备环境的调用和释放设备环境的调用和释放在在MFC类库中,类库中,CDC类是定义设备环境对象的类,类是定义设备环境对象的类,所有绘图函数都在所有绘图函数都在CDC类中定义。类中定义。CDC类是所有其类是所有其他他MFC设备环境的基类。设备环境的基类。在在Windows程序中输出文字(或数据)时,首先要程序中输出文字(或数据)时,首先要调用该输出对象的设备环境,然后运行相应的调用该输出对象的设备环境,然后运行相应的CDC成员函数,最后需要释放设备环境。成员函数,最后需要
2、释放设备环境。调用和释放设备环境:调用和释放设备环境:CWnd类的成员函数类的成员函数GetDC和和ReleaseDC(pDC)。第2页/共16页一、文本输出一、文本输出l文字列输出的基本操作文字列输出的基本操作CDC:TextOut:Writes a character string at the specified location using the currently selected font.CDC:SetTextColor:CDC:SetBkMode:设置背景模式(透明设置背景模式(透明/不透明)不透明)CDC:SetBkColor:文字背景颜色设置。文字背景颜色设置。第3页/共
3、16页一、文本输出一、文本输出l数据输出数据输出需要向屏幕输出数据时,通常把数据进行文字列化需要向屏幕输出数据时,通常把数据进行文字列化后再执行后再执行CDC:TextOut函数。数据的文字列化由函数。数据的文字列化由windows API 提供的函数来完成。提供的函数来完成。wsprintf 整数数据文字列化;整数数据文字列化;sprintf 浮点数数据文字列化;浮点数数据文字列化;Format 浮点数数据文字列化(可设置有效位数);浮点数数据文字列化(可设置有效位数);第4页/共16页一、文本输出一、文本输出l数据输出数据输出例例char buf20;CString sc;int x1=2
4、0,y1=80;double x2,y2;x2=30.5;y2=0.8wsprintf(buf,”(%d,%d)”,x1,x2);sprintf(buf,”(%f,%f)”,x2,y2);pDC-TextOut(x1,y1,buf,strlen(buf);pDC-TextOut(110,80,buf,strlen(buf);sc.Format(“(%5.2f,%5.2f)”,x2,y2);pDC-TextOut(370,80,sc);第5页/共16页一、文本输出一、文本输出l字体设定字体设定使用使用CFont类的成员函数类的成员函数CreatePointFont()CFont newFont;
5、CFont*pOldFont;newFont.CreatPointFont(180,”Arial”,pDC);pOldFont=pDC-SelectObject(&newFont);pDC-SelectObject(pOldFont);使用使用CFont类类CreateFont()第6页/共16页二、绘图二、绘图lCDC类的主要绘图成员函数:类的主要绘图成员函数:CDC:SetPixel 画点画点CDC:MoveTo/CDC:LineToCDC:Ellipse 画椭圆(用当前设备刷子填充内部,画椭圆(用当前设备刷子填充内部,用当前设备笔画边线)用当前设备笔画边线)CDC:FillRect 画矩
6、形(只填充不画边线画矩形(只填充不画边线0CDC:Rectangle 画矩形(用当前设备刷子填充内部,画矩形(用当前设备刷子填充内部,用当前设备笔画边线)用当前设备笔画边线)CDC:Polygon 画多边形(画多边形(同上同上)CDC:Arc 画圆弧画圆弧第7页/共16页二、绘图二、绘图l坐标设定(映射模式):坐标设定(映射模式):CDC:SetMapMode()设定映射模式设定映射模式CDC:SetViewportOrg()设定坐标系原点。设定坐标系原点。例:例:CRect rect;GetClientRect(&rect);pDC-SetMapMode(MM_LOMETRIC);pDC-S
7、etViewportOrg(int(rect.right/2),int(rect.bottom/2);第8页/共16页二、绘图二、绘图l画笔的使用:画笔的使用:VC+中的画笔用来绘制直线、曲线或填充图形的边中的画笔用来绘制直线、曲线或填充图形的边线。在使用画笔之前必须先创建或选择画笔对象。线。在使用画笔之前必须先创建或选择画笔对象。例:例:CPen myPen;CPen*pOldPen;myPen.CreatePen(PS_SOLID,1,RGB(255,0,0);pOldPen=pDC-SelectObject(&myPen);pDC-SelectObject(pOldPen);myPen.
8、DeleteObject();第9页/共16页二、绘图二、绘图l刷子的使用:刷子的使用:VC+中的刷子用来给图形内部着色。在使用刷子之中的刷子用来给图形内部着色。在使用刷子之前必须先创建或选择刷子对象。前必须先创建或选择刷子对象。例:例:CBrush myBrush;CBrush*pOldBrush;myBrush.CreateSolidBrush(RGB(255,0,0);pOldBrush=pDC-SelectObject(&myBrush);pDC-SelectObject(pOldBrush);myBrush.DeleteObject();第10页/共16页三、普通菜单的制作三、普通菜
9、单的制作l删除应用程序中多余的菜单项,只保留文件、删除应用程序中多余的菜单项,只保留文件、编辑、帮助三项,增加以下项目编辑、帮助三项,增加以下项目(使用使用Class Wizard):菜单名菜单名对象对象ID消息消息消息处理函数消息处理函数 计算项目计算项目无无正弦正弦ID_SINCOMMANDCMyVC3View:OnSin()余弦余弦ID_COSCOMMAND:OnCos()正弦余弦乘积正弦余弦乘积ID_SINCOSCOMMAND:OnSincos()第11页/共16页三、普通菜单的制作三、普通菜单的制作l在相应的函数中添加代码:在相应的函数中添加代码:void CMyVC3View:On
10、Sin()/TODO:Add your command handler code herexm0=1;InvalidateRect(NULL,FALSE);第12页/共16页三、菜单被选标记的制作三、菜单被选标记的制作l增加以下菜单项:增加以下菜单项:菜单名菜单名对象对象ID消息消息消息处理函数消息处理函数 曲线线宽曲线线宽无无线宽线宽=2ID_CX1COMMANDCMyVC3View:OnCx1()线宽线宽=4ID_CX2COMMAND:OnCx2()线宽线宽=7ID_CX3COMMAND:OnCx3()第13页/共16页三、普通菜单的制作三、普通菜单的制作l在相应的函数中添加代码在相应的函
11、数中添加代码,设置线宽:设置线宽:void CMyVC3View:OnCx1()/TODO:Add your command handler code herexz0=2;InvalidateRect(NULL,FALSE);第14页/共16页三、菜单被选标记的制作三、菜单被选标记的制作l增加增加UPDATE_COMMAND_UI消息处理函数框消息处理函数框架:架:菜单名菜单名对象对象ID消息消息消息处理函数消息处理函数 曲线线宽曲线线宽无无线宽线宽=2ID_CX1UPDATE_COMMAND_UICMyVC3View:OnUpdateCx1()线宽线宽=4ID_CX2UPDATE_COMMAND_UI:OnUpdateCx2()线宽线宽=7ID_CX3UPDATE_COMMAND_UI:OnUpdateCx3()第15页/共16页三、普通菜单的制作三、普通菜单的制作l在相应的函数中添加代码在相应的函数中添加代码,设置菜单选中标记:设置菜单选中标记:void CMyVC3View:OnUpdateCx3(CCmdUI*pCmdUI)/TODO:Add your command update UI handler code herepCmdUI-SetCheck(xz0=7)?1:0);pCmdUI-Enable(xm0)?TRUE:FALSE);第16页/共16页
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100