c++07第01章windows编程基础vs2010开发环境概要

上传人:今*** 文档编号:107481782 上传时间:2019-10-19 格式:PPT 页数:56 大小:1.17MB
返回 下载 相关 举报
c++07第01章windows编程基础vs2010开发环境概要_第1页
第1页 / 共56页
c++07第01章windows编程基础vs2010开发环境概要_第2页
第2页 / 共56页
c++07第01章windows编程基础vs2010开发环境概要_第3页
第3页 / 共56页
c++07第01章windows编程基础vs2010开发环境概要_第4页
第4页 / 共56页
c++07第01章windows编程基础vs2010开发环境概要_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《c++07第01章windows编程基础vs2010开发环境概要》由会员分享,可在线阅读,更多相关《c++07第01章windows编程基础vs2010开发环境概要(56页珍藏版)》请在金锄头文库上搜索。

1、Windows编程基础VS2010开发环境,第01章,主要内容,1.1.1 Windows操作系统简介,Microsoft Windows是一个基于Intel x86微处理芯片的个人计算机上的具有图形用户的多任务和多窗口的操作系统,它是对MS-DOS操作系统的扩展和延伸。与MS-DOS操作系统相比,它有许多优越之处:首先,它提供了比MS-DOS字符界面更为直观、友好的图形用户界面;其次,它可以一次运行多个程序(即多任务),方便了用户的操作,提高了机器的利用率;再次,Windows环境下的应用程序具有一致的外观和用户接口,用户只需要熟悉其中一两个程序,就可以触类旁通学会使用别的Windows应用

2、程序。另外,Windows还具有更好的虚拟内存管理和设备无关特性等。由于Windows具有以上突出优点,Windows平台上的软件开发和程序设计已成为主流。,1.1.1 Windows操作系统简介,Windows之所以取得成功,主要在于它具有以下优点: 1.直观、高效的面向对象的图形用户界面,易学易用。 2.用户界面统一、友好、漂亮。 3.丰富的设备无关及图形操作。 4.多任务。 虽然同一时刻计算机可以运行多个应用程序,但仅有一个是处于活动状态的,其标题栏呈现高亮颜色。一个活动的程序是指当前能够接收用户键盘输入的程序。,1.1.2 应用程序结构,1应用程序的组成 一个完整的Windows应用程

3、序通常由表1-1所示五种类 型的文件组成。,2源程序组织结构,Windows应用程序具有相对固定的基本结构,其中由入口函数WinMain和窗口函数构成基本框架,并包含各种数据类型,数据结构与函数等。入口函数WinMain和窗口函数是Windows应用程序的技术基础。 WinMain函数是所有Windows应用程序的入口,类似C语言中的main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。 WinMain函数实现以下功能 1。注册窗口类,建立窗口及执行其他必要的初始化工作。 2.进入消息循环,根据从应用程序消息队列接收的消息,调用相应的处理过程。 3.

4、当消息循环检索到WM_QUIT消息时终止程序运行。 WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。,WinMain函数声明,int WINAPI WinMain ( HINSTANCE hThisInst, / 应用程序当前实例句柄 HINSTANCE hPrevInst, / 应用程序以前实例句柄 LPSTR lpszCmdLine, / 指向程序命令行参数指针 int nCmdShow / 应用程序开始执行时窗口显示方式,整数标识 ); 值得注意的是,Windows应用程序可能并行地多次执行,因而可能出现同一个应用程序的多个窗口同时存在的情况,这也是Windows操作

5、系统所进行的多任务管理。,WinMain函数声明,Windows系统将应用程序每一次执行称为该应用程序的一个实例(instance),并使用一个实例句柄唯一地标识它。 Windows应用程序和DOS应用程序的重要区别之一就是Windows应用程序在启动时,需要进行初始化工作。 初始化包括窗口类的定义、注册、创建窗口实例和显示窗口四部分。 (1) 窗口类定义 在应用程序中,窗口类定义了窗口的形式与功能。窗口类定义通过给窗口类数据结构赋值来完成的,该数据结构中包含窗口类的各种属性。,WinMain函数声明,窗口类定义常用以下函数完成: LoadIcon函数 LoadIcon函数的作用是在应用程序中

6、加载一个窗口图标。其原型为: HICON LoadIcon(HINSTANCE hInstance, / 图标资源所在的模块句柄;如果为NULL,则使用系统预定义图标 LPCTSTR lpIconName); / 图标资源名或系统预定义图标标识名 LoadCursor函数 LoadCursor函数的作用是在应用程序中加载一个窗口光标。,其原型为: HCRSOR LoadCursor (HINSTANCE hInstance, / 光标资源所在模块句柄;如为NULL,则使用系统预定义光标 LPCTSTR lpCursorName / 光标资源名或系统预定义光标标识名。 ); GetStockOb

7、ject函数 应用程序还经常调用函数GetStockObject获取系统提供的背景刷子,其原型为: HBRUSH GetStockObject(int nbrush); / nBrush:为系统提供的背景画刷标识名。,WinMain函数声明,(2) 注册窗口类 Windows系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用,窗口类的注册由函数RegisterClass()实现。其形式为: RegisterClass( / wndclass为窗口类结构 RegisterClass函数的返回值为布尔类型,注册成功则返回TRUE,否则返回FALSE。 (3) 创建窗口

8、 创建一个窗口类实例由函数CreateWindow()实现,该函数原型为,WinMain函数声明,WinMain函数声明,WinMain函数声明,在实际应用中,可定义组合式的窗口样式,例如下面的语句表示带有垂直和水平滚动条的弹出式窗口: WM_HSCROLL|WM_VSCROLL|WM_POPUP (4) 显示窗口 ShowWindow(hwnd,nCmdShow); 其中,hwnd为窗口句柄,nCmdShow为窗口显示方式标识,表1-3列出了常用显示方式标识及说明。,WinMain函数声明,WinMain函数声明,3消息循环,Windows应用程序的运行以消息为核心,Windows将产生的消

9、息放入应用程序的消息队列中,而应用程序的WinMain函数从消息循环提取队列中的消息,并将其传递给窗口函数的相应过程处理。 消息循环的常见格式如下: MSG Msg while(GetMessage( ,3消息循环,其中,函数GetMessage的作用是从消息队列中读取一条消息,并将消息放在一个MSG结构中,其形式为: GetMessage ( lpMSG, / 指向MSG结构指针 hwnd, nMsgFilterMin, / 用于消息过滤的最小消息号 nMsgFiltermax / 用于消息过滤的最大消息号 ); 通过设置参数nMsgFilterMin和 nMsgFilterMax可实现消息

10、的过滤,即仅处理所确定的消息号范围内的消息。如果两个参数都为0,则不过滤消息。,TranslateMessage函数负责将消息的虚拟键转换为字符信息,其形式为: TranslateMesage(lpMSG); DispatchMessage函数将参数lpMSG指向的消息传送到指定窗口函数,其形式为: DispatchMessage(lpMSG); 当GetMessage函数返回0,即检索到WM_QUIT消息时,程序将结束循环并退出。 4窗口函数 窗口函数定义了应用程序对接收到不同消息的响应,其中包含了应用程序对各种可能接收到消息的处理过程,是消息处理分支控制语句的集合,通常,窗口函数由一个或多

11、个switch语句组成。每一条case语句对应一种消息,当,3消息循环,应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。 窗口函数是应用程序处理接收到消息的函数,其中包含了应用程序对各种可能接收到消息的处理过程。 窗口函数的一般形式如下: LRESULT CALLBACK WndProc( HWND hwnd, / 窗口句柄 UINT message, / 代表所处理消息的消息值 WPARAM wParam, / 消息的附加参数 LPARAM lParam / 消息的附加参数,3消息循环,3消息循环,) switch(message) / message为标识消息的

12、消息值 case break; case WM_DESTROY: PostQuitMessage(0); break;,3消息循环,Default: return DefWindowProc(hwnd,messagem,wParam,lParam); return(0); 窗口函数的主体是消息处理语句,该语句由一系列case语句组成。程序员只需根据窗口可能收到的消息在case语句中编写相应的处理程序段即可。 在case语句的消息处理程序段中一般都有对消息WM_DESTROY的处理。如前所述该消息是关闭窗口时发出的。一般情况下,应用程序调用函数,3消息循环,PostQuitMessage响应这条

13、消息。PostQuitMessage函数的原型如下: void PostQuitMessage(int nExitCode); / nExitCode为应用程序退出代码 函数PostQuitMessage的作用是向应用程序发出WM_QUIT消息,请求退出。除此之外,应用程序通过在消息处理程序段中加入如下语句,为未定义处理过程的消息提供默认处理: default: return DefWindowProc(hwnd,message,wParam,lParam); 函数DefWindowProc是系统默认的处理过程,以保证所有发送到该窗口的消息均得以处理。,(1)数据类型 Windows应用程序的

14、源程序中包含了种类繁多的数据类型,windows.h是用户调用系统功能的关键,该文件中定义了Windows系统使用的数据类型,其中包括许多简单类型和结构类型。 (2)数据结构 Windows C语言程序数据结构比一般的C语言数据结构复杂,常用的数据结构有: MSG MSG结构中包含一个消息的全部信息,既是消息发送的格式,也是Windows编程中最基本的数据结构之一。有关MSG结构的定义参考有关资料。,3消息循环,RECT结构定义了一个矩形区域,其中包含该矩形区域的左上角和右下角两个点的X坐标和Y坐标。其定义如下: typedef struct tagRect LONG left; / 矩形框左

15、上角X坐标 LONG top; / 矩形框左上角Y坐标 LONG right; / 矩形框右上角X坐标 LONG bottom; / 矩形框右上角Y坐标,3消息循环, WNDCLASS WNDCLASS结构包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一。应用程序通过定义一个窗口类确定窗口的属性。其定义如下: typedef struct tagWNDCLASS UINT style; / 窗口类的样式,一般设置为0 WINDPROC lpfnWndProc; / 指向窗口函数的指针. Int cbClsExtra; / 分配在窗口类结构后的字节数 Int cbWndE

16、xytra; / 分配在,3消息循环,窗口实例后的字节数 HINSTANCE hInstance; / 定义窗口类的应用程序的实例句柄 HICON hIcon; / 窗口类的图标 HCURSOR hCursor; / 窗口类的光标 HBRUSH hbrBackgroudn; / 窗口类的背景刷 LPCTSTR lpszMenuiName; / 窗口类菜单资源名 LPCTSTR lpszClassName; / 窗口类名 WNDCLASS;,3消息循环, POINT POINT 结构定义了屏幕上或窗口中的一个点的X坐标和Y坐标。POINT结构也是应用程序中最常用的结构之一,有关POINT 的定义请参考有关资料。,3消息循环, RECT RECT结构定义了一个矩形区域,其中包含该矩形区域的左上角和右下角两个点的X坐标和Y坐标。其定义如下: typedef struct tagRect LONG

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号