已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
先来看两个简单的Windows应用程序。 例1 一个最简单的Windows应用程序 (1)运行Microsoft Visual C+ 6.0后,选择“文件”“新建”菜单命令,打开应用程序向导,显示出“新建”对话框。单击“工程”标签,从列表框中选中Win32 Application(Win32 应用程序)项,如图所示。,Windows应用实践-Windows程序结构,Windows应用实践,(2)在工程框中输入Win32应用程序项目名称Ex_HelloMsg。在“位置”下的编辑框中直接输入文件夹名称 (3)单击“确定”按钮继续。一个询问项目类型的Win32应用程序向导将被显示,选中“An empty project”(一个空的工程)项。单击“完成”按钮,系统将显示AppWizard(应用程序向导)的创建信息,单击“确定”按钮系统将自动创建此应用程序。 (4)再次选择“文件”“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的列表框中选择C+ Source File项,在右边的“文件”下的编辑框中键入Ex_HelloMsg.cpp,单击“确定”按钮,如图所示。,Windows应用实践,(5)在文档窗口中输入下面的代码: #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MessageBox (NULL, “你好,我的Visual C+世界!“, “问候“, 0) ; return 0 ; (6)编译并运行程序。,从上面的程序可以看出: 控制台应用程序是以main函数作为进入程序的初始入口点,但在Windows应用程序中,main函数被WinMain函数取而代之,WinMain函数的原型如下: int WINAPI WinMain ( HINSTANCE hInstance, / 当前实例句柄 HINSTANCE hPrevInstance, / 以前的实例句柄 LPSTR lpCmdLine, / 指向命令行参数的指针 int nCmdShow / 窗口的显示状态 ),Windows应用实践,这里出现了一个新的概念“句柄”(handle),所谓句柄是一个标识Windows资源(如菜单、图标、窗口等)和设备等对象的变量,或者是一个对操作系统资源的间接引用。 每一个Win32应用程序都需要Windows.h头文件,它还包含了其他的一些Windows头文件。这些头文件定义了Windows的所有数据类型、函数调用、数据结构和符号常量。,程序中,MessageBox是一个Win32 API(Application Programming Interface, 应用程序接口)函数,用来弹出一个对话框窗口,显示短信息。该函数第一个参数用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的消息内容和对话框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。,例Ex_HelloWin 一个较完整的Windows应用程序 (1)创建一个An empty project类型的Win32 Application(Win32 应用程序)项目Ex_HelloWin。 (2)选择“文件”“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的列表框中选择C+ Source File项,在右边的“文件”框中键入Ex_HelloWin.cpp,单击“确定”按钮。 (3)在文档窗口中输入下面的代码:,与Ex_HelloMsg示例相比,Ex_HelloWin要复杂得多,但总可以将其分解成是两个基本函数的程序结构。一个是WinMain函数,另一个是用户定义的窗口过程函数WndProc。 窗口过程函数WndProc用来接收和处理各种不同的消息,而WinMain函数通常要完成以下几步工作。,定义并调用API函数RegisterClass注册应用程序的窗口类。 调用相关API函数创建和显示窗口,并进行其他必要的初始化处理。其中,函数CreateWindow用来创建已注册窗口类的窗口。Windows每一个窗口都有一些基本属性,如窗口标题、窗口位置和大小、应用程序图标、鼠标指针、菜单和背景颜色等。窗口类就是充当这些属性的模板。,CreateWindow函数具有下列原型: HWND CreateWindow ( LPCTSTR lpClassName, / 已注册的窗口类名 LPCTSTR lpWindowName, / 窗口标题 DWORD dwStyle, / 窗口风格 int x, / 窗口的水平位置 int y, / 窗口的垂直位置 int nWidth, / 窗口宽度 int nHeight, / 窗口高度 HWND hWndParent, / 父窗口句柄 HMENU hMenu, / 菜单句柄或控件标识 HINSTANCE hInstance, / 应用程序实例句柄 LPVOID lpParam / 其他窗口创建时的参数数据 );,创建和启动应用程序的消息循环。Windows应用程序接收各种不同的消息,包括键盘消息、鼠标以及窗口产生的各种消息。Windows系统首先将消息放入消息队列中,应用程序的消息循环就是从应用程序的消息队列中检取消息,并将消息发送到相应的窗口过程函数中做进一步处理。API函数GetMessage 和DispatchMessage就是起到这样的作用。 如果接收到WM_QUIT消息,则退出应用程序。 (4)编译并运行程序,在窗口中单击鼠标左键,就会弹出一个对话框,结果如图2.4所示。,上述Windows应用程序的基本流程,用下图表示。,1消息驱动机制 基于Windows程序和基于控制台应用程序之间的一个最根本区别,就在于控制台应用程序是通过调用系统的函数来获得用户输入的,而Windows程序则是通过系统发送的消息来处理用户输入的。 在Windows操作环境中,无论是系统产生的动作或是用户运行应用程序产生的动作,都称为事件(Events)产生的消息(Message)。例如,在Windows 桌面(传统风格)上,双击应用程序的快捷图标,系统就会执行该应用程序。在Windows的应用程序中,也是通过接收消息、分发消息、处理消息来和用户进行交互的。这种消息驱动的机制是Windows编程的最大特点。,Windows编程特点,2图形设备接口(GDI) 在控制台应用程序中,想要在屏幕或打印机上显示或打印一幅图形是一件非常复杂的事件,因为用户必须按照屏幕分辨率模式以及专用绘图函数库调用相应的函数在屏幕上绘图,或根据打印机类型或指令规则向打印机输送数据。而Windows提供了一个抽象的接口,称为图形设备接口(Graphical Device Interface,GDI),使得用户直接利用系统的GDI函数就能方便地实现图形和文本的输出,而不必关心与系统相连的外部设备的类型。,3基于资源的程序设计 Windows应用程序常常包含众多图形元素,例如光标、菜单、工具栏、位图、对话框等。每一个这样的资源都用相应的标识符来区分,而且Windows内部也有预定义的资源,例如在Ex_HelloWin中,LoadIcon和LoadCursor函数将系统内部的IDI_APPLICATION(应用程序图标)和IDC_ARROW(箭头光标)作为创建窗口的窗口图标和鼠标指针。,4动态链接库 动态链接库提供了一些特定结构的函数,能被应用程序在运行过程中装入和连接,且多个程序可以共享同一个动态链接库,这样就可以大大节省内存和磁盘空间。从编程角度来说,动态链接库可以提高程序模块的灵活性,因为它本身是可以单独设计、编译和调试的。 Windows提供了丰富的应用程序可调用的函数,大多数用于实现其用户界面和在屏幕显示的文本和图形,都是通过动态链接库来实现的。这些动态链接库是一些具有DLL扩展名或者有时是EXE扩展名的文件。 在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL。其中,KERNEL32.DLL用来处理存储器低层功能、任务和资源管理等Windows核心服务;GDI32.DLL用来提供图形设备接口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述表和字体等;而USER32.DLL负责窗口的管理,包括消息、菜单、光标、计时器以及其他与控制窗口显示相关的一些功能。,需要说明的是: 这些基本数据类型都是用大写字符来表示,以便与一般C+基本数据类型相区别。 凡是数据类型的前缀是P或LP,则表示该类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧伤病人的评估
- 燃气正确使用方法
- 中级脂肪燃烧训练教案
- 大学生职业发展规划指南
- 2026年中国电动液压站行业市场规模及未来投资方向研究报告
- 高校网络学习平台使用指南
- 水库扩容工程技术方案
- 轧钢厂项目建设工程方案
- 景观设施维护管理与保养方案
- 钙基高分子复合材料生产线项目建筑工程方案
- 五年级科学光学单元测试卷
- 学堂在线 实绳结技术 期末考试答案
- 中小学教师信息技术教学能力检测试题及答案
- 自然灾害后的心理调适指南
- 客源合作协议书范本
- 2021年新《经济法基础》-第10章-税收征收管理法律制度
- 眩晕综合征护理常规
- 质量管理体系文件培训
- 机械原理 课件 第4章 连杆机构及其设计
- 飞行体验游旅行合同
- 《急性心力衰竭急救》课件
评论
0/150
提交评论