实验3 Wiondows程序设计与MFC编程基础 (2).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:91 大小:2.8MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验3 Wiondows程序设计与MFC编程基础 (2).ppt

实验3Wiondows程序设计与MFC编程基础(2).ppt

预览

免费试读已结束,剩余 81 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验三Windows程序设计与MFC编程基础outlineoutlineWindows操作系统是一个多任务、面向对象的图形操作系统。在Windows操作环境中,Windows应用程序采用“基于消息的事件驱动”运行机制,这是它与过去的面向过程的应用程序机制的不同之处。面向过程的编程方式:程序执行的流程遵从程序员预先规定的路径。面向对象的Windows程序执行顺序取决于:事件和消息发生的顺序。Windows应用程序设计的重点:编写事件和消息的处理程序。Windows程序与DOS程序的不同Windows程序的主函数是WinMain(),源代码框架与DOS程序有极大不同。如果使用MFC编写Windows程序,则WinMain()作为MFC的库函数被隐藏起来,一个CWinApp派生类的全局对象的InitInstance()和Run()成员函数分担了WinMain()的功能。窗口过程也是隐藏的,用户不需要编写,但是被窗口过程调用的一系列消息响应函数需要用户重载和编辑。Windows程序的组成一个主函数WinMain()一个窗口过程(习惯上被命名为WndProc,但不是硬性规定)若干消息响应函数若干常规函数编写Windows应用程序必须首先了解以下内容:(1)窗口的概念(2)事件驱动的概念(3)消息(4)句柄一个应用程序的窗口一般包含下列组成部分:窗口是由应用程序创建的一个用于接收用户输入和显示输出的矩形区域。是系统管理应用程序的基本单位。窗口由“非客户区”和“客户区”组成。非客户区由系统绘制,包括菜单、工具栏、最大化按钮等。客户区由应用程序绘制,用于输出数据和接受用户的输入。编写一个Windows应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与数据交换的过程。Windows程序设计是针对事件或消息的处理进行。Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分。Windows对消息有一套严格的定义,并在其产生时将其发送给所有相关的应用程序,这些消息用于驱动应用程序运行以实现一定的功能。消息驱动机制消息驱动机制消息常用句柄类型及其说明outlineWinMain函数开始执行数据类型其它宏匈牙利表示法常见的前缀(约定,并非规定)常见的前缀(约定)outline程序入口注册窗口类创建窗口消息循环窗口过程窗口过程API函数功能outlineMFC简介MFC类的层次结构和常用类通用工具类CStringCTimeCRectCpointCSizeoutlineMFC应用程序框架结构WinMain()函数,隐藏在应用程序框架中;应用程序类(如CMyHelloApp),该类的每个对象代表一个应用程序,程序中默认定义一个全局CMyHelloApp对象即theApp;应用程序启动WinMain()寻找由CWinApp派生出的全局构造的应用程序对象;成员函数:CMyHelloApp::InitInstance(),调用所需的构造并显示应用程序的主框架窗口;成员函数:CWinApp::Run(),隐藏在基类中,发送应用程序的消息到窗口,保持应用程序的正常运行;CMainFrame类,其对象代表应用程序的主框架窗口;CDocument/CView类,应用程序框架的核心。MFC通过"文档一视图"结构为应用程序提供一种将数据与视图相分离的存储方式。文档类的作用是将应程序的数据保存在文档类对象中,以及从磁盘文件中读或向磁盘文件中写数据。视图类的作用是显示数据和编辑数据。MFC应用程序的构成文档—视结构(Document-Viewworkframe)MFC应用程序的运行机制利用AppWizard生成MFC应用程序MyHello应用程序MyHello应用程序MyHello应用程序MyHello应用程序分析MyHello应用程序分析MyHello应用程序分析MyHello应用程序分析MyHello应用程序分析MyHello应用程序分析MFC示例简单的工程——最大公约数存盘、build(编译+连接)、试运行。养成经常存盘、试运行的好习惯,不要等错误积累得很多了才……小提示:如果程序(工程)刚刚由向导生成,尚未经过编辑,也没有定义新的资源(对话框、控件、等等),此时立即编译试运行,应该不会有错。如果过早出错,可能是VC的配置有错,或者VC已被破坏,最好重装VC。voidCGcdDlg::OnButtonBeginCalc(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(true);m_nGcd=gcd(m