资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,MFC,的基本层次结构,见,MSDN:MFC Hierarchy Char,第,1,页,/,共,16,页,一、文本输出,设备环境的调用和释放,在,MFC,类库中,,CDC,类是定义设备环境对象的类,所有绘图函数都在,CDC,类中定义。,CDC,类是所有其他,MFC,设备环境的基类。,在,Windows,程序中输出文字(或数据)时,首先要调用该输出对象的设备环境,然后运行相应的,CDC,成员函数,最后需要释放设备环境。,调用和释放设备环境:,CWnd,类的成员函数,GetDC,和,ReleaseDC(pDC),。,第,2,页,/,共,16,页,一、文本输出,文字列输出的基本操作,CDC:TextOut:,Writes a character string at the specified location using the currently selected font.,CDC:SetTextColor:,CDC:SetBkMode:,设置背景模式(透明,/,不透明),CDC:SetBkColor:,文字背景颜色设置。,第,3,页,/,共,16,页,一、文本输出,数据输出,需要向屏幕输出数据时,通常把数据进行文字列化后再执行,CDC:TextOut,函数。数据的文字列化由,windows API,提供的函数来完成。,wsprintf,整数数据文字列化;,sprintf,浮点数数据文字列化;,Format,浮点数数据文字列化(可设置有效位数);,第,4,页,/,共,16,页,一、文本输出,数据输出,例,char buf20;,CString sc;,int x1=20,y1=80;,double x2,y2;,x2=30.5;y2=0.8,wsprintf(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,页,一、文本输出,字体设定,使用,CFont,类的成员函数,CreatePointFont(),CFont newFont;,CFont*pOldFont;,newFont.CreatPointFont(180,”Arial”,pDC);,pOldFont=pDC-SelectObject(,pDC-SelectObject(pOldFont);,使用,CFont,类,CreateFont(),第,6,页,/,共,16,页,二、绘图,CDC,类的主要绘图成员函数:,CDC:SetPixel,画点,CDC:MoveTo/CDC:LineTo,CDC:Ellipse,画椭圆(用当前设备刷子填充内部,用当前设备笔画边线),CDC:FillRect,画矩形(只填充不画边线,0,CDC:Rectangle,画矩形(用当前设备刷子填充内部,用当前设备笔画边线),CDC:Polygon,画多边形(,同上,),CDC:Arc,画圆弧,第,7,页,/,共,16,页,二、绘图,坐标设定(映射模式):,CDC:SetMapMode(),设定映射模式,CDC:SetViewportOrg(),设定坐标系原点。,例:,CRect rect;,GetClientRect(,pDC-SetMapMode(MM_LOMETRIC);,pDC-SetViewportOrg(int(rect.right/2),int(rect.bottom/2);,第,8,页,/,共,16,页,二、绘图,画笔的使用:,VC+,中的画笔用来绘制直线、曲线或填充图形的边线。在使用画笔之前必须先创建或选择画笔对象。,例:,CPen myPen;,CPen*pOldPen;,myPen.CreatePen(PS_SOLID,1,RGB(255,0,0);,pOldPen=pDC-SelectObject(,pDC-SelectObject(pOldPen);,myPen.DeleteObject();,第,9,页,/,共,16,页,二、绘图,刷子的使用:,VC+,中的刷子用来给图形内部着色。在使用刷子之前必须先创建或选择刷子对象。,例:,CBrush myBrush;,CBrush*pOldBrush;,myBrush.CreateSolidBrush(RGB(255,0,0);,pOldBrush=pDC-SelectObject(,pDC-SelectObject(pOldBrush);,myBrush.DeleteObject();,第,10,页,/,共,16,页,三、普通菜单的制作,删除应用程序中多余的菜单项,只保留文件、编辑、帮助三项,增加以下项目,(,使用,Class Wizard),:,菜单名,对象,ID,消息,消息处理函数,计算项目,无,正弦,ID_SIN,COMMAND,CMyVC3View:,OnSin(),余弦,ID_COS,COMMAND,:OnCos(),正弦余弦乘积,ID_SINCOS,COMMAND,:OnSincos(),第,11,页,/,共,16,页,三、普通菜单的制作,在相应的函数中添加代码:,void CMyVC3View:OnSin(),/TODO:Add your command handler code here,xm0=1;,InvalidateRect(NULL,FALSE);,第,12,页,/,共,16,页,三、菜单被选标记的制作,增加以下菜单项:,菜单名,对象,ID,消息,消息处理函数,曲线线宽,无,线宽,=2,ID_CX1,COMMAND,CMyVC3View:,OnCx1(),线宽,=4,ID_CX2,COMMAND,:OnCx2(),线宽,=7,ID_CX3,COMMAND,:OnCx3(),第,13,页,/,共,16,页,三、普通菜单的制作,在相应的函数中添加代码,设置线宽:,void CMyVC3View:OnCx1(),/TODO:Add your command handler code here,xz0=2;,InvalidateRect(NULL,FALSE);,第,14,页,/,共,16,页,三、菜单被选标记的制作,增加,UPDATE_COMMAND_UI,消息处理函数框架:,菜单名,对象,ID,消息,消息处理函数,曲线线宽,无,线宽,=2,ID_CX1,UPDATE_COMMAND_UI,CMyVC3View:,OnUpdateCx1(),线宽,=4,ID_CX2,UPDATE_COMMAND_UI,:OnUpdateCx2(),线宽,=7,ID_CX3,UPDATE_COMMAND_UI,:OnUpdateCx3(),第,15,页,/,共,16,页,三、普通菜单的制作,在相应的函数中添加代码,设置菜单选中标记:,void CMyVC3View:OnUpdateCx3(CCmdUI*pCmdUI),/TODO:Add your command update UI handler code here,pCmdUI-SetCheck(xz0=7)?1:0);,pCmdUI-Enable(xm0)?TRUE:FALSE);,第,16,页,/,共,16,页,
展开阅读全文