欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    简要回顾.ppt

    • 资源ID:5339257       资源大小:635.52KB        全文页数:61页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    简要回顾.ppt

    简要回顾,创建一个基本应用程序框架添加并使用对话框使用向导创建对话框应用程序使用无模式对话框通用对话框和消息对话框,常用控件(一),4,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,结合Ex_SDI使用ClassWizard,ClassWizard概述 打开MFC的ClassWizard的方法:选择“View”“ClassWizard”菜单或直接使用Ctrl+W快捷键在源代码文件的文档编辑窗口中,右击鼠标,选择ClassWizard命令当ClassWizard打开后,就会弹出如图的MFC ClassWizard对话框,打开MFC的ClassWizard,消息和消息映射,消息分类Windows应用程序中的消息主要有三种类型。窗口消息(Windows message)主要指由WM_开头的消息,一般由窗口类和视图类对象来处理窗口消息往往带有参数,以标志处理消息的方法控件的通知消息(Control notifications)当控件的状态发生改变时,控件就会向其父窗口发送WM_COMMAND通知消息应用程序框架处理控件消息的方法和窗口消息相同,但按钮的BN_CLICKED通知消息除外,它的处理方法与命令消息相同,消息和消息映射,命令消息(Command message)主要包括由用户交互对象(菜单、工具条的按钮、快捷键等)发送的WM_COMMAND通知消息命令消息的处理方式与其他两种消息不同,它能够被多种对象接收、处理,这些对象包括文档类、文档模板类、应用程序本身以及窗口和视类等而窗口消息和控件的通知消息是由窗口对象接收并处理的,这里的窗口对象是指从CWnd中派生的类的对象包括CFrameWnd、CMDIFrameWnd、CMDIChildWnd、CView、CDialog以及从这些类派生的对象等,ClassWizard映射消息的一般方法,示例:向CEx_SDIView中添加WM_LBUTTOMDOWN的消息映射,则可按下列步骤进行:(1)按Ctrl+W快捷键打开MFC ClassWizard对话框(2)在Class name组合框中,将类名选定为CEx_SDIView(3)在Object IDs列表框中选定CEx_SDIView,而在Messages列表中选定WM_LBUTTOMDOWN消息(4)双击Messages列表中的WM_LBUTTOMDOWN消息或单击Add Function按钮,都会在CEx_SDIView类中添加该消息的映射函数OnLButtonDown,同时在Member funcions列表中显示这一消息映射函数和被映射的消息,ClassWizard映射消息的一般方法,ClassWizard映射消息的一般方法,(5)单击Edit Code,转向文档窗口,定位到OnLButtonDown源代码处(6)添加下列代码:void CEx_SDIView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler code/here and/or call default MessageBox(你好,我的Visual C+世界!,问候,0);CView:OnLButtonDown(nFlags,point);(7)运行程序,在窗口客户区左击,弹出一个消息对话框,ClassWizard映射消息的一般方法,查看CEx_SDIView程序代码,可以发现:ClassWizard为WM_LBUTTOMDOWN的消息映射作了以下三个方面内容的安排:1)在头文件Ex_SDIView.h中声明消息处理函数OnLButtonDown:protected:/AFX_MSG(CEx_SDIView)afx_msg void OnLButtonDown(UINT nFlags,CPoint point);/AFX_MSG DECLARE_MESSAGE_MAP(),ClassWizard映射消息的一般方法,2)在Ex_SDIView.cpp源文件前面的消息映射入口处,添加映射宏:BEGIN_MESSAGE_MAP(CEx_SDIView,CView)/消息映射开始/AFX_MSG_MAP(CEx_SDIView)ON_WM_LBUTTONDOWN()/AFX_MSG_MAPEND_MESSAGE_MAP()/消息映射结束,ClassWizard映射消息的一般方法,3)在Ex_SDIView.cpp文件中写入一个空的消息处理函数的模板,框架:void CEx_SDIView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler/code here and/or call default CView:OnLButtonDown(nFlags,point);,ClassWizard添加映射消息,根据ClassWizard产生的上述消息映射过程,可以手动添加一些ClassWizard不支持的消息映射函数,以完成特定的功能鼠标和键盘消息各自都有相应的消息处理宏和预定义消息处理函数因此消息映射函数名称不再需要用户重新定义对于菜单和按钮等命令消息来说,用ClassWizard映射时会弹出一个对话框,用来指定消息映射函数的名称,ClassWizard删除映射消息,若指定的消息映射函数需要删除需要先在ClassWizard对话框的Messages列表中选定要删除的消息映射函数,然后单击Delete Function按钮最后关闭ClassWizard对话框,并在该消息映射函数所在的类实现文件(.cpp)中将映射函数定义的代码全删除,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,键盘和鼠标消息,按下一个键或组合键时,将WM_KEYDOWN或WM_SYSKEYDOWN放入具有输入焦点的应用程序窗口的消息队列中键被释放时,把WM_KEYUP或WM_SYSKEYUP消息放入消息队列中对字符键,会在这两个消息之间产生WM_CHAR消息,键盘和鼠标消息,ClassWizard能自动添加了当前类的WM_KEYDOWN和WM_KEYUP击键消息处理函数的调用,它们具有下列函数原型:afx_msg void OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags);afx_msg void OnKeyUp(UINT nChar,UINT nRepCnt,UINT nFlags);afx_msg是MFC用于定义消息函数的标志,参数nChar表示虚拟键代码,nRepCnt表示当用户按住一个键时的重复计数,nFlags表示击键消息标志虚拟键代码指与设备无关的键盘编码。最常用的虚拟键代码已被定义在Winuser.h中,键盘和鼠标消息,MFC中的ClassWizard也提供相应的字符消息处理框架,并自动添加了当前类的WM_CHAR消息处理函数调用,它具有下列函数原型:afx_msg void OnChar(UINT nChar,UINT nRepCnt,UINT nFlags);nChar表示键的ASCII码,nRepCnt表示当用户按住一个键时的重复计数,nFlags表示字符消息标志通常,只将键盘消息发送给具有输入焦点的窗口,但鼠标消息不受这种限制只要鼠标移过窗口的客户区时,就会向该窗口发送WM_MOUSEMOVE(移动鼠标)消息,键盘和鼠标消息,前面的客户区是指窗口中用于输出文档的区域。在窗口的客户区中按下或释放一个鼠标键时,还会产生相应的消息ClassWizard会将映射成类似afx_msg void OnXXXX的消息处理函数,原型:afx_msg void OnXXXX(UINT nFlags,CPoint point);point表示鼠标光标在屏幕的(x,y)坐标;nFlags表示鼠标按钮和键盘组合情况,它可以是下列值的组合(MK前缀表示“鼠标键”):MK_CONTROL 键盘上的Ctrl键被按下MK_LBUTTON 鼠标左按钮被按下MK_MBUTTON 鼠标中按钮被按下MK_RBUTTON 鼠标右按钮被按下MK_SHIFT 键盘上的Shift键被按下,想知道某个键被按下,可用对应的标识与nFlags进行逻辑“与”(&)运算,所得结果若为TRUE(非0)时,则表示该键被按下,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,映射计时器消息,有一种常用的输入设备就是计时器,它周期性地按一定的时间间隔向应用程序发送WM_TIMER消息由于它能实现“实时更新”以及“后台运行”等功能,因而在应用程序中计时器是一个难得的程序方法应用程序是通过CWnd的SetTimer函数来设置并启动计时器的,映射计时器消息,函数原型UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD);nIDEvent指定该计时器的标识值(不能为0),应用程序需要多个计时器时可多次调用该函数,但每一个计时器的标识值应是唯一的,各不相同nElapse表示计时器的时间间隔(单位为毫秒)lpfnTimer是一个回调函数的指针,该函数由应用程序来定义,用来处理计时器WM_TIMER消息一般情况下该参数为NULL,此时WM_TIMER消息被放入到应用程序消息队列中供CWnd对象处理,映射计时器消息,SetTimer函数成功调用后返回新计时器的标识值应用程序不再使用计时器时,调用CWnd:KillTimer函数来停止WM_TIMER消息的传送,原型:BOOL KillTimer(int nIDEvent);nIDEvent和用户调用SetTimer函数设置的计时器标识值是一致的对于WM_TIMER消息,ClassWizard会将其映射成具有下列消息处理函数:afx_msg void OnTimer(UINT nIDEvent);,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,其他窗口消息的映射,系统中,除了用户输入产生的消息外,还有许多系统根据应用程序的状态和运行过程产生的消息,有时也需要用户进行处理(1)WM_CREATE消息窗口对象创建后,向视图发送的第一个消息如果用户有什么工作需要在初始化时处理,就可在该消息处理函数中加入所需代码由于WM_CREATE消息发送时,窗口对象还未完成,窗口还不可见,因此在该消息处理函数OnCreate内,不能调用那些依赖于窗口处于完成激活状态的函数,其他窗口消息的映射,(2)WM_CLOSE或WM_DESTROY消息从系统菜单中关闭窗口或者父窗口被关闭时,都会发送WM_CLOSE消息WM_DESTROY消息是在窗口从屏幕消失后发送的,因此它紧随WM_CLOSE之后,其他窗口消息的映射,(3)WM_PAINT消息当窗口的大小发生变化、窗口内容发生变化、窗口间的层叠关系发生变化或调用函数UpdateWindow或RedrawWindow时,系统都将产生WM_PAINT消息表示要重新绘制窗口的内容。该消息处理函数的原型是:afx_msg void OnPaint();用ClassWizard映射该消息的目的是执行自己的图形绘制代码,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,控件的添加,控件的选择,静态文本,组框,复选框,组合框,水平滚动条,旋转按钮,滑动条,列表视图,标签,复合编辑,月历,用户定制工具,静态图片,编辑框,按钮,单选框,列表框,垂直滚动条,进展条,热键,树形视图,动画,日期选择,IP地址,组合框的扩展,单个控件的选取,鼠标选取保证选择按钮是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键助记符选取在相应的控件上右击。选择“Properties”菜单项,对话框中的“Caption”框是用来输入控件的标题,在标题中的某个字母之前键入“&”符号,则该字母就是此控件的助记符Tab键选取利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件,多个控件的选取,在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件都将被选取先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若在选取时,对已选取的控件再选取一下,则该控件取消选取一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实心小方块,拖动它可改变控件的大小多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,而其他控件的选择框的小方块是空心的,设定控件的Tab键次序,一是改变用Tab键选择控件的次序二是当两个或两个以上的控件构成一组时,需要它们的Tab键次序连续对话框内控件的Tab键次序设定步骤如下:1)选择“Layout”“Tab Order”命令,或按Ctrl+D,此时每个控件的左上方都有一个数字,表明了当前Tab键次序2)按新的次序依次用鼠标单击各个控件,新的Tab键即可生成3)单击对话框或按Enter键结束Tab Order方式,设定控件的Tab键次序,对话框内的控件的布局,大多布置控件的命令使用前,需要选取多个控件,且“主要控件”起到了关键作用多个控件的布置过程中,常需要重新设置“主要控件”。设置的方法是按住Ctrl或Shift键,用鼠标单击所要指定的控件系统提供了网格、标尺等辅助工具在控件布局工具栏的最后两个按钮分别用来网格和标尺的切换一旦网格显示,添加或移动控件时都将自动定位在网格线上。“Layout”菜单下的“Guide Settings”命令提供了设置网格单元大小的功能,控件的创建方法,对话框模板中用编辑器指定控件应用程序启动该对话框时,系统就会为对话框创建控件当对话框消失时,控件也随之清除编程方式调用相应控件类的成员函数Create来创建在Create函数指定空间的父窗口指针建议使用第一种方法,用编辑器指定控件拖放,编程方式创建控件,AddMember Variable,编程方式创建控件,BOOL CMyDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization herem_btnWnd.Create(你好,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,120,60),this,201);/创建控件对象CFont*font=this-GetFont();/获取对话框的字体m_btnWnd.SetFont(font);/设置控件字体return TRUE;/return TRUE unless you set the focus to a control/EXCEPTION:OCX Property Pages should return FALSE,CButton:Create(),Create用来创建一个按钮控件virtual BOOL Create(LPCTSTR lpszCaption,DWORD dwStyle,const RECT 第一个参数指定按钮的标题第二个参数指定控件的风格第三个参数指定它在父窗口中的位置和大小第四个参数指定父窗口指针最后一个参数是指定该控件的标识值,主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,控件的消息,消息处理是一个永久的话题用户可以向控件发送消息来完成特定的任务或者根据控件产生的消息执行自己的代码应用程序创建控件后,当控件的状态发生改变时,控件就会向其父窗口发送消息通知消息WM_COMMANDWM_NOTIFY,消息映射,添加按钮,右键单击Button1按钮,选择“ClassWizard”菜单,出现“MFC ClassWizard”对话框 选定IDC_BUTTON1的BN_CLICKED,双击左键或单击Add Function按钮对话框中,可以为添加的成员函数名重新定义,单击OK。选定成员函数OnButton1项,双击左键或单击Edit Code按钮,在此成员函数添加代码,消息映射,不同资源对象(控件、菜单命令等)的消息是不相同的。如按钮控件IDC_BUTTON1的消息有两个BN_CLICKED和BN_DOUBLECLICKED分别表示当用户单击或双击该按钮时产生的消息一般不需要对对话框中的OK(确定)与Cancel(取消)按钮进行消息映射系统已自动设置了这两个按钮的动作,当用户单击这两个按钮都将自动关闭对话框,控件消息映射机制,声明消息处理函数添加消息映射宏写入空的消息处理函数的模板,程序在三处添加新用户代码,(1)在头文件(MyDlg.h文件)中声明消息处理函数OnButton1:protected:/AFX_MSG(CMyDlg)afx_msg void OnButton1();/AFX_MSG,程序在三处添加新用户代码,(2)在MyDlg.cpp源文件开头部分的消息映射入口,添加消息映射宏:/消息映射开始BEGIN_MESSAGE_MAP(CMyDlg,CDialog)/AFX_MSG_MAP(CMyDlg)ON_BN_CLICKED(IDC_BUTTON1,OnButton1)/AFX_MSG_MAP/消息映射结束END_MESSAGE_MAP()表明消息及其处理函数之间的联系单击按钮控件IDC_BUTTON1时,系统将自动调用OnButton1函数,程序在三处添加新用户代码,(3)在MyDlg.cpp文件中写入一个空的消息处理函数的模板,以便用户填入具体代码,如下面的框架:void CMyDlg:OnButton1()/TODO:Add your control notification/handler code here,MessageBox(你按下了Button1按钮!);,映射控件通用消息,映射控件通用消息,BOOL CMyDlg:OnCommand(WPARAM wParam,LPARAM lParam)WORD nCode=HIWORD(wParam);/控件的通知消息WORD nID=LOWORD(wParam);/控件的ID号if(nID=201),主要内容,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,DDX/DDV,DDV/DDX技术中,允许为同一个控件关联多个数据成员变量但必须保证这些变量名是互不相同的(control(控件类),value(具体数据)且这些变量在同一个类型不能有多个变量如果添加的成员变量是一个数值类型,则在MFC ClassWizard对话框的Member Variables页面下方还要求用户输入变量的范围,这就是控件的数据校验设置,控件添加变量,为CMyDlg类的按钮控件IDC_BUTTON1添加并使用其成员变量m_MyBtn,则其相应的过程如下:1)启动MFC ClassWizard,切换到Member Variables页面 2)选定Class name为CMyDlg,然后在Control IDs列表中,选定所要关联的控件ID号IDC_BUTTON1,双击鼠标左键或单击Add Variable按钮3)在Member variable name框中填好与控件相关联的成员变量m_MyBtn,单击OK,在Control IDs列表中出现刚才添加的内容,控件添加变量,控件添加变量,单击OK,发现ClassWizard作了以下三方面的修改1)在MyDlg.h文件中,添加与控件关联的成员变量的声明,代码如下:/Dialog Data/AFX_DATA(CMyDlg)enum IDD=IDD_DIALOG1;CButtonm_MyBtn;CStringm_strEdit;/AFX_DATA,控件添加变量,2)在MyDlg.cpp文件中的CMyDlg构造函数实现代码处,添加数据成员变量的初始代码:CMyDlg:CMyDlg(CWnd*pParent/*=NULL*/):CDialog(CMyDlg:IDD,pParent)/AFX_DATA_INIT(CMyDlg)m_strEdit=_T();/AFX_DATA_INIT,控件添加变量,3)在MyDlg.cpp文件中的DoDataExchange函数体内,添加控件的DDX/DDV代码void CMyDlg:DoDataExchange(CDataExchange*pDX)/调用此函数作为DDX的开始CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg)DDX_Control(pDX,IDC_BUTTON1,m_MyBtn);DDX_Text(pDX,IDC_EDIT1,m_strEdit);DDV_MaxChars(pDX,m_strEdit,20);/AFX_DATA_MAP,DDX/DDV,为一个控件定义一个关联的数据成员变量后,就可以使用CWnd:UpdateData()进行相关数据的输入和读取True:控件传给变量False:变量传给控件函数实现控件的控制,包括控件相关数据的输入和读取,DDX/DDV,运行该程序,当在编辑框中输入“Hello”后,单击Button2按钮,则此时Button1按钮的名称就变成了编辑框控件中的内容“Hello”void CMyDlg:OnButton2()UpdateData();m_MyButton.SetWindowText(m_strEdit);,内容回顾,使用ClassWizard进行消息映射键盘和鼠标消息映射计时器消息其他窗口消息的映射控件的创建方法控件的消息及消息映射控件的数据交换和数据校验,作业及下节课内容,作业熟悉消息和消息映射机制熟悉上述机制反映在不同文件中的具体内容利用MFC实现对话框中控件的DDX和DDV下节课主要内容静态控件和按钮编辑框和旋转按钮控件列表框,

    注意事项

    本文(简要回顾.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开