1、用来保存数据。视图对象:用来显示和编辑数据。,7,五、MFC应用程序的开发流程,应用程序编程的基本步骤:(1)根据应用程序的特性在MFC AppWizardexe应用程序中选择合适的应用程序框架。(2)利用资源编辑器编辑资源,如菜单等。(3)利用类向导(ClassWizard)或手工添加类、成员变量、成员函数声明。(4)编写具体的成员函数代码。(5)编译、链接程序检查程序中是否存在语法错误。(6)调试应用程序。,8,六、单文档【ClassView】面板,CAboutDlg(关于对话框类)管理关于对话框。CFrameWnd(框架窗口类)CWxling_27App(应用程序类)用来处理消息。CWx
2、ling_27Doc(文档类)MFC中的数据是存储在类文档中。文档类负责管理和维护数据本身。CWxling_27View(视图类)结果的显示是在视图类中。视图类负责处理用户鼠标和键盘的操作。,9,七、登录对话框与单文档视图联接,新建单文档工程:TEXT(注意此名由设计者自己任取);在ResourceView,单击Insert Dialog,插入一对话框IDD_DIALOG1(默认ID号);右键选中新建的对话框,利用类向导建立一个新类Create a new class,名称为:Cdlg_login;在MainFrm.cpp文件的前面,语句#include“MainFrm.h”的后面添加新类的头
3、文件:#include dlg_login.h 在FileView中点击source files,双击MainFrm.cpp。找到:CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct),这是窗体框架创建函数。在该函数的后面(在return 0;的前面)加入语句(注意大小写):Cdlg_login dlg;/定义一个登录对话框对象dlgdlg.DoModal();/让对话框对象以有模式形式显示出来此时对话框与单文档联接完成。下载“格式工厂3.011”将自己的照片转换成BMP格式,通过插入Bitmap命令,将照片引入至资源中,并添加至对话框中。,10
4、,七续、登录对话框退出按钮代码,/确定按钮void CDlg_login:OnOK()/TODO:Add extra validation herethis-UpdateData(true);if(this-m_name=wxl,/取消按钮void CDlg_login:OnCancel()/TODO:Add extra cleanup hereExitProcess(0);/退出,11,八、单文档中菜单项与对话框联接,新建单文档工程:Ys1(注意此名由设计者自己任取);Cdlg_jc(自己命名),如右图1所示;在/Ys1View.cpp:文件中语句#include Ys1View.h的后面添
5、加新类的头文件:#include dlg_jc.h 编辑主菜单如图2所示:在主菜下通过“建立类向导”命令,从“Class name”组合框中选择CYs1View,如图3,4所示,并在函数OnJc()编写代码如下:void CYs1View:OnJc()/TODO:Add your command handler code here Cdlg_jc jc;/定义一个求阶层对话框对象jcjc.DoModal();/让对话框对象以有模式形式显示出来此时单文档菜单项与对话框联接完成。,12,1.求阶层按钮的代码,使用MFC进行程序设计时,如输出结果是单值,可用以下代码作为模板:void Cdlg_jc
6、:Add extra validation hereUpdateData(TRUE);/更新控件值 double i,jsz=1.0;for(i=1;i=m_srs;i+)jsz*=i;/求阶乘 m_jsz.Format(%f,jsz);/将双精度型转换为字符,f 对应浮点数/其中m_jsz为输出编辑框的成员变量名UpdateData(FALSE);/控件值更新编辑框显示/CDialog:OnOK();,13,/续上for(i=a;iTextOut(x,y,s);/在指定位置输出文本 else pDC-TextOut(x,y,s);/在指定位置输出文本x=x+30;,2.求素数按钮的代码,vo
7、id Cdlg_zss:/更新控件值 CDC*pDC=GetDC();/获取视图初始的客户区DC/DC表示设备环境int a=m_szqz;int b=m_szzz;int i,j,n=0;int x=70,y=220;CString s;if(b=100)/控制只求100内的素,使用MFC进行程序设计时,如输出结果是多值,可用以下代码作为模板:,14,注:CDC类有4个派生类,CClientDC类只能在窗口的客户区(不包括边框、标题栏、菜单栏以及状态栏的空白区域)进行绘图。CMetaFileDC封装了在一个Windows图元文件中绘图的方法。CPaintDC只在处理WM_PAINT消息中使用
8、,用户一旦获得相关的CDC指针,就可以将它当做任何设备环境(包括屏幕、打印机)的指针来使用。CWindowDC允许在窗口的任意位置中进行绘图,点(0,0)指整个窗口的左上角。,在微软基类库MFC中,CDC类是定义设备上下文(DC,设备环境)对象的基类,所有绘图函数都在CDC基类中定义。,15,3.单文档菜单项中画直线代码,菜单项“画直线”按钮代码:OnHzx()/TODO:Add your command handler code here/使用CClientDC类来画图,创建的是视图窗口的dc对象,作图只能在视图的客服区内作图Invalidate(true);/擦除窗口原有内容重新绘制Upd
9、ateWindow();/使窗口立即重绘CClientDC dc(this);/创建一个名为dc的视图窗口的dc对象,this指向当前的对话框CPen pen;/设置画笔/创建一支5号粗细画实线的绿色画笔,pen.CreatePen(PS_SOLID,5,RGB(0,255,0);/选用新画笔CPen*oldpen=dc.SelectObject(/线段的终点/RGB(红,绿,蓝),或用CDC类绘图void CYs1View:OnHzx()/Invalidate(true);/刷新屏幕CDC*pDC=GetDC();pDC-MoveTo(100,100);pDC-LineTo(300,500)
10、;,16,4.单文档菜单项中画矩形代码,菜单项“画矩形”按钮代码:void CWxling_28View:OnHjx()/TODO:Add your command handler code hereCClientDC dc(this);CPen pen;/定义画笔/创建红色3号粗细实线画笔pen.CreatePen(PS_SOLID,3,RGB(255,0,0);CPen*oldpen=dc.SelectObject(/画矩形,17,5.单文档菜单项中画椭圆代码,菜单项“画椭圆”按钮代码:OnHty()/TODO:/设置画笔pen.CreatePen(PS_SOLID,3,RGB(0,255
11、,0);CPen*oldpen=dc.SelectObject(/画椭圆/*(int x1,int y1,int x2,int y2)(x1,y1)和(x2,y2)表示所画椭圆外切矩形的左上角和右下角坐标*/,18,6.单文档菜单项中画sin曲线代码,在/Wxl_30View.cpp中加入头文件:#include math.h“菜单项“画sin曲线”按钮代码:void CWxl_30View:OnSin()/TODO:CRect rect;/定义矩形对象GetClientRect(rect);int x0=rect.Width()/2;int y0=rect.Height()/2;dc.Mov
12、eTo(20,y0);dc.LineTo(rect.Width()-20,y0);dc.MoveTo(x0,20);dc.LineTo(x0,rect.Height()-20);double setp=3.14159/100;for(int i=-200;i200;i+)dc.SetPixel(x0+(i/300.0)*rect.Width()/2.0,y0-sin(setp*i)*rect.Height()/4.0,RGB(255,0,0);,19,7.单文档菜单项中画澳运图标代码,void CA12View:OnHy()/TODO:CPen pen1,pen2,pen3,pen4,pen5;/设置画笔pen1.CreatePen(PS_SOLID,5,RG
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1