第2章-Windows编程浙江农林_第1页
第2章-Windows编程浙江农林_第2页
第2章-Windows编程浙江农林_第3页
第2章-Windows编程浙江农林_第4页
第2章-Windows编程浙江农林_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Windows是一个多任务的操作系统,是一个多任务的操作系统,也就是说,在也就是说,在Windows中允许多个应用程中允许多个应用程序同时运行。序同时运行。 在在Windows操作系统上运行的应用程操作系统上运行的应用程序叫做序叫做Windows应用程序。应用程序。 Windows应用程序的进行是依靠外部应用程序的进行是依靠外部发生的事件来驱动。发生的事件来驱动。 程序不断等待,等待任何可能的输入,程序不断等待,等待任何可能的输入,进行判断后再做适当的处理。进行判断后再做适当的处理。 下面对下面对Windows编程的基本知识进行编程的基本知识进行详细介绍。详细介绍。 Windows界面组成界

2、面组成2.1 Windows应用程序的数据类型应用程序的数据类型2.2Windows应用程序结构应用程序结构2.3Windows编程实例编程实例2.42.1 Windows界面组成界面组成 1窗口窗口 2边框边框 3标题栏标题栏 4系统菜单系统菜单 5菜单栏菜单栏 6工具栏工具栏 7客户区客户区 8状态栏状态栏 9图标图标 10垂直滚动条和水平滚动条垂直滚动条和水平滚动条 图图2.1 窗口窗口 图图2.1 窗口窗口2.2 Windows应用程序的数据类型应用程序的数据类型 数据类型是对数据的一种抽象描述。数据类型是对数据的一种抽象描述。 在计算机程序中能操作的数据有很多在计算机程序中能操作的数

3、据有很多种,不同的数据所需要的存储空间有所不种,不同的数据所需要的存储空间有所不同。同。 将数据按照类型进行分类,有助于程将数据按照类型进行分类,有助于程序员对于存储空间的分配。序员对于存储空间的分配。2.2.1 2.2.1 基本数据类型基本数据类型 在在Windows应用程序中,为了提高应应用程序中,为了提高应用程序的可读性,用程序的可读性,Windows为许多基本数为许多基本数据数定义了别名,例如:据数定义了别名,例如: typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef fl

4、oat FLOAT; typedet unsigned int UINT; 另外,另外,Windows应用程序还提供了一应用程序还提供了一些结构类型的数据,例如:些结构类型的数据,例如: typedef struct tagMSG HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG; 2.2.2 2.2.2 特殊数据类型特殊数据类型 在在Windows应用程序中,存在着许多应用程序中,存在着许多复杂的程序对象和实例,如窗口、字体、复杂的程序对象和实例,如窗口、字体、滚动条等。滚动条等。

5、 为了在程序中区别这些复杂的程序对为了在程序中区别这些复杂的程序对象和实例,象和实例,Windows对它们进行了标识。对它们进行了标识。 这种有别于普通变量的标识称为句柄。这种有别于普通变量的标识称为句柄。 2.3 Windows应用程序结构应用程序结构 一般情况下,一个一般情况下,一个Windows应用程序应用程序由头文件、源文件、动态链接库和资源等由头文件、源文件、动态链接库和资源等几部分组成。几部分组成。 但在这几个组成部分中,开发人员的但在这几个组成部分中,开发人员的主要工作是对源文件进行编写。主要工作是对源文件进行编写。 下面对下面对Windows应用程序的源文件进应用程序的源文件进

6、行介绍。行介绍。2.3.1 WinMain2.3.1 WinMain函数函数 在传统的在传统的DOS程序中,程序中,main()函数是函数是程序的入口点,而在程序的入口点,而在Windows应用程序中,应用程序中,WinMain()函数成为了程序的入口点。函数成为了程序的入口点。 当当Windows操作系统启动一个程序时,操作系统启动一个程序时,调用的就是该程序所对应的调用的就是该程序所对应的WinMain()函数。函数。 当当Winmain()函数结束或返回时,函数结束或返回时,Windows应用程序结束。应用程序结束。 WinMain()函数的原型如下:函数的原型如下: int WINAP

7、I WinMain ( HINSTANCE hThisInst, HINSTANCe hPrevInst, LPSTR lpszCmdLine, Int nCmdShow, ) WinMain()函数的主要作用是创建应用函数的主要作用是创建应用程序窗口并建立消息循环。程序窗口并建立消息循环。 在该函数完成此项工作的过程中,经在该函数完成此项工作的过程中,经过了过了5个步骤:设计窗口类型、注册窗口类个步骤:设计窗口类型、注册窗口类型、创建窗口、显示窗口和消息循环。型、创建窗口、显示窗口和消息循环。1 1设计窗口类型设计窗口类型 在创建应用程序窗口之前,需要对窗在创建应用程序窗口之前,需要对窗口的

8、属性进行相应的设置,如窗口样式、口的属性进行相应的设置,如窗口样式、窗口图样、窗口光标等。窗口图样、窗口光标等。 在在Windows中,需要在中,需要在WNDCLASS结构中对窗口的属性进行设置,该结构的结构中对窗口的属性进行设置,该结构的原型如下:原型如下: typedef struct _WNDCLASS UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTST

9、R lpszMenuName; LPCTSTR lpszClassName; WNDCLASS; 2注册窗口类型 对窗口类型进行设计后,需要进行注对窗口类型进行设计后,需要进行注册。册。 对窗口进行注册就是将设计好的窗口对窗口进行注册就是将设计好的窗口类型向系统进行登记。类型向系统进行登记。 注册窗口类型时需调用注册窗口类型时需调用RegisterClass()函数,该函数的原型如下:函数,该函数的原型如下: BOOL RegisterClass(WNDCLASSA &wc);3 3创建窗口创建窗口 创建窗口时,需要调用创建窗口时,需要调用API函数函数CreateWindow()函数,该函数

10、的原型如下:函数,该函数的原型如下: HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam);4 4显示窗口显示窗口 调用调用ShowWindow()函数可以显示窗函数可以显示窗口,该函数的原型如下:口,该函数的原型如下: BOOL ShowWindow( HWND hWnd, int nCmd

11、Show ); 在显示窗口后,需要对窗口进行刷新在显示窗口后,需要对窗口进行刷新操作。操作。 刷新窗口可以使用刷新窗口可以使用UpdateWindow()函数,该函数的原型如下:函数,该函数的原型如下: BOOL UpdateWindow( HWND hWnd);5 5消息循环消息循环 创建并显示窗口后,应用程序的初始创建并显示窗口后,应用程序的初始化工作进入了消息循环这一阶段。化工作进入了消息循环这一阶段。 代码如下:代码如下: while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(&msg);

12、 Windows应用程序可以接收各种输入应用程序可以接收各种输入消息,如键盘、鼠标、计时器产生的消息消息,如键盘、鼠标、计时器产生的消息或是由其他应用程序传递过来的消息等。或是由其他应用程序传递过来的消息等。 接收消息时使用的是接收消息时使用的是GetMessage()函函数,该函数的原型如下:数,该函数的原型如下: BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ); GetMessage()函数将获取的消息复制函数将获取的消息复制到一个到一个MSG结构中。结构中。 如果队列中没有

13、任何消息,如果队列中没有任何消息,GetMessage()函数将一直空闲直到队列中函数将一直空闲直到队列中又有消息时再返回。又有消息时再返回。 如果队列中已有消息,它将取出一个如果队列中已有消息,它将取出一个后返回。后返回。 MSG结构包含了一条结构包含了一条Windows消息的消息的完整信息,其定义如下:完整信息,其定义如下: HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG; 2.3.2 WndProc 2.3.2 WndProc窗口函数窗口函数 在在WinMain()函数中创建

14、窗口后,然后函数中创建窗口后,然后需要编写一个窗口函数,用于处理发送给需要编写一个窗口函数,用于处理发送给窗口的消息。窗口的消息。 这个窗口函数就是这个窗口函数就是WndProc(),该函,该函数的原型如下:数的原型如下: LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); WndProc()函数由一个或多个函数由一个或多个switch语句组成。语句组成。 每一条每一条case语句对应一种消息。语句对应一种消息。 当应用程序接收到一个消息时,相应当应用程序接收到一个消息时,相应的的c

15、ase语句被激活。语句被激活。2.4 Windows编程实例编程实例 本节将通过一个实例介绍本节将通过一个实例介绍Windows窗窗口的创建过程。口的创建过程。 当程序创建后,会在客户区输出文本,当程序创建后,会在客户区输出文本,并且当鼠标单击窗口的客户区时,会发出并且当鼠标单击窗口的客户区时,会发出声音。声音。 图图2.3 输入工程名输入工程名图图2.4 选择创建空工程选择创建空工程图图2.5 【New Project Information】对话框对话框图图2.6 添加添加C+ Source File图图2.7 程序程序sample0201的运行结果的运行结果图图2.8 【Project

16、Settings】对话框对话框小结小结 本章主要介绍了本章主要介绍了Windows编程的基础编程的基础知识,包括知识,包括Windows应用程序界面组成和应用程序界面组成和Windows应用程序结构,并通过一个实例应用程序结构,并通过一个实例让读者熟悉让读者熟悉Windows应用程序编程过程。应用程序编程过程。 其中,读者应该明确掌握其中,读者应该明确掌握Windows应应用程序中各个主要函数的作用:用程序中各个主要函数的作用:WinMain()函数是一个程序的入口点,而函数是一个程序的入口点,而WndProc()函数用于响应窗口中的每个消息。函数用于响应窗口中的每个消息。 下一章将要向读者介

17、绍下一章将要向读者介绍Windows应用应用程序的类封装。程序的类封装。上机指导上机指导 实验一:熟悉实验一:熟悉Visual C+集成开发环境集成开发环境 实验内容实验内容 创建一个名为创建一个名为myfirst的工程,部分界的工程,部分界面如图面如图2.9所示。所示。图图2.9 New对话框对话框 实验目的实验目的 工欲善其事,必先利其器。工欲善其事,必先利其器。 同样,想要熟练地编程,首要条件是同样,想要熟练地编程,首要条件是要熟悉编程环境。要熟悉编程环境。 因此本实验需要读者快速掌握创建因此本实验需要读者快速掌握创建Win32 Application的步骤。的步骤。 实现思路实现思路

18、在在2.4节讲述了如何创建一个节讲述了如何创建一个Win32 Application实例。实例。 按照按照2.4节讲述的顺序创建即可。节讲述的顺序创建即可。 实验二:创建一个实验二:创建一个Win32应用程序(应用程序(1) 实验内容实验内容 创建一个创建一个Win32的应用程序,程序的运的应用程序,程序的运行结果如图行结果如图2.10所示。所示。图图2.10 实验二的运行结果实验二的运行结果 实验目的实验目的 创建一个标题名为创建一个标题名为“上机指导上机指导”、窗口、窗口内容显示内容显示“上机指导上机指导实验二实验二”的的Win32应用程序。应用程序。 通过该实验,可以理解通过该实验,可以理解Windows应用应用程序的组成及其创建过程。程序的组成及其创建过程。 实现思路实现思路 在在2.4节讲述了如何创建一个节讲述了如何创建一个Win32 Application实例。实例。 按照按照2.4节讲述的顺序创建即可。节讲述的顺序创建即可。 但是其中一些必要的代码需要改动,但是其中一些必要的代码需要改动,请读者自己思考。请读者自己思考。 实验三:创建一个实验三:创建一个Win32应用程序(应用程序(2) 创建一个创建一个Win32的应用程序,程序的运的应用程序,程序的运行结果如图行结果如图2.11所示。所示。图图2.11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论