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

下载本文档

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

文档简介

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

Windows界面组成2.1

Windows应用程序的数据类型2.2Windows应用程序结构2.3Windows编程实例2.42.1Windows界面组成

1.窗口

2.边框

3.标题栏

4.系统菜单

5.菜单栏

6.工具栏7.客户区8.状态栏9.图标10.垂直滚动条和水平滚动条

图2.1窗口

图2.1窗口2.2Windows应用程序的数据类型

数据类型是对数据的一种抽象描述。在计算机程序中能操作的数据有很多种,不同的数据所需要的存储空间有所不同。将数据按照类型进行分类,有助于程序员对于存储空间的分配。2.2.1基本数据类型

在Windows应用程序中,为了提高应用程序的可读性,Windows为许多基本数据数定义了别名,例如:

typedefunsignedlongDWORD;typedefintBOOL;typedefunsignedcharBYTE;typedeffloatFLOAT;typedetunsignedintUINT;

另外,Windows应用程序还提供了一些结构类型的数据,例如:typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;2.2.2特殊数据类型

在Windows应用程序中,存在着许多复杂的程序对象和实例,如窗口、字体、滚动条等。为了在程序中区别这些复杂的程序对象和实例,Windows对它们进行了标识。这种有别于普通变量的标识称为句柄。

2.3Windows应用程序结构

一般情况下,一个Windows应用程序由头文件、源文件、动态链接库和资源等几部分组成。但在这几个组成部分中,开发人员的主要工作是对源文件进行编写。下面对Windows应用程序的源文件进行介绍。2.3.1WinMain函数

在传统的DOS程序中,main()函数是程序的入口点,而在Windows应用程序中,WinMain()函数成为了程序的入口点。当Windows操作系统启动一个程序时,调用的就是该程序所对应的WinMain()函数。当Winmain()函数结束或返回时,Windows应用程序结束。

WinMain()函数的原型如下:intWINAPIWinMain(HINSTANCEhThisInst,HINSTANCehPrevInst,LPSTRlpszCmdLine,IntnCmdShow,)

WinMain()函数的主要作用是创建应用程序窗口并建立消息循环。在该函数完成此项工作的过程中,经过了5个步骤:设计窗口类型、注册窗口类型、创建窗口、显示窗口和消息循环。1.设计窗口类型

在创建应用程序窗口之前,需要对窗口的属性进行相应的设置,如窗口样式、窗口图样、窗口光标等。在Windows中,需要在WNDCLASS结构中对窗口的属性进行设置,该结构的原型如下:

typedefstruct_WNDCLASS{UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HINSTANCEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;}WNDCLASS;2.注册窗口类型

对窗口类型进行设计后,需要进行注册。对窗口进行注册就是将设计好的窗口类型向系统进行登记。注册窗口类型时需调用RegisterClass()函数,该函数的原型如下:

BOOLRegisterClass(WNDCLASSA&wc);3.创建窗口

创建窗口时,需要调用API函数CreateWindow()函数,该函数的原型如下:

HWNDCreateWindow(LPCTSTRlpClassName,LPCTSTRlpWindowName,DWORDdwStyle,intx,inty,intnWidth,intnHeight,HWNDhWndParent,HMENUhMenu,HANDLEhInstance,LPVOIDlpParam);4.显示窗口

调用ShowWindow()函数可以显示窗口,该函数的原型如下:

BOOLShowWindow(HWNDhWnd,intnCmdShow);

在显示窗口后,需要对窗口进行刷新操作。刷新窗口可以使用UpdateWindow()函数,该函数的原型如下:

BOOLUpdateWindow(HWNDhWnd);5.消息循环

创建并显示窗口后,应用程序的初始化工作进入了消息循环这一阶段。代码如下:while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}

Windows应用程序可以接收各种输入消息,如键盘、鼠标、计时器产生的消息或是由其他应用程序传递过来的消息等。接收消息时使用的是GetMessage()函数,该函数的原型如下:

BOOLGetMessage(LPMSGlpMsg,HWNDhWnd,UINTwMsgFilterMin,UINTwMsgFilterMax);

GetMessage()函数将获取的消息复制到一个MSG结构中。如果队列中没有任何消息,GetMessage()函数将一直空闲直到队列中又有消息时再返回。

如果队列中已有消息,它将取出一个后返回。

MSG结构包含了一条Windows消息的完整信息,其定义如下:

HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;2.3.2WndProc窗口函数

在WinMain()函数中创建窗口后,然后需要编写一个窗口函数,用于处理发送给窗口的消息。

这个窗口函数就是WndProc(),该函数的原型如下:LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam);

WndProc()函数由一个或多个switch语句组成。每一条case语句对应一种消息。当应用程序接收到一个消息时,相应的case语句被激活。2.4Windows编程实例

本节将通过一个实例介绍Windows窗口的创建过程。当程序创建后,会在客户区输出文本,并且当鼠标单击窗口的客户区时,会发出声音。图2.3输入工程名图2.4选择创建空工程图2.5【NewProjectInformation】对话框图2.6添加C++SourceFile图2.7程序sample0201的运行结果图2.8【ProjectSettings】对话框小结

本章主要介绍了Windows编程的基础知识,包括Windows应用程序界面组成和Windows应用程序结构,并通过一个实例让读者熟悉Windows应用程序编程过程。其中,读者应该明确掌握Windows应用程序中各个主要函数的作用:WinMain()函数是一个程序的入口点,而WndProc()函数用于响应窗口中的每个消息。下一章将要向读者介绍Windows应用程序的类封装。上机指导实验一:熟悉VisualC++集成开发环境实验内容创建一个名为myfirst的工程,部分界面如图2.9所示。图2.9New对话框

实验目的工欲善其事,必先利其器。同样,想要熟练地编程,首要条件是要熟悉编程环境。因此本实验需要读者快速掌握创建Win32Application的步骤。

实现思路在2.4节讲述了如何创建一个Win32Application实例。按照2.4节讲述的顺序创建即可。实验二:创建一个Win32应用程序(1)实验内容创建一个Win32的应用程序,程序的运行结果如图2.10所示。图2.10实验二的运行结果

实验目的创建一个标题名为“上机指导”、窗口内容显示“上机指导——实验二”的Win32应用程序。通过该实验,可以理解Windows应用程序的组成及其创建过程。

实现思路在2.4节讲述了如何创建一个Win32Application实例。按照2.4节讲述的顺序创建即可。但是其中一些必要的代码需要改动,请读者自己思考。实验三:创建一个Win32应用程序(2)创建一个Win32的应用

温馨提示

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

评论

0/150

提交评论