第2章-Windows编程概述浙江农林

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

•Windows是一个多任务的操作系统,也就是说,在Windows中允许多个应用程序同时运行。•在Windows操作系统上运行的应用程序叫做Windows应用程序。•Windows应用程序的进行是依靠外部发生的事件来驱动。•程序不断等待,等待任何可能的输入,进行判断后再做适当的处理。•下面对Windows编程的基本知识进行详细介绍。Windows界面组成2.1Windows应用程序的数据类型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的应用程序,程序的运行结果如图2.11所示。图2.11实验三的运行结果•实验目的•创建一个标题名为“上机指导”的Win32应用程序,其窗口内容显示一个由“*”组成的矩形。•通过该实验,可以理解Windows应用程序的组成及其创建过程。•实现思路•在2.4节讲述了如何创建一个Win32Application实例。•按照2.4节讲述的顺序创建即可。•但是其中一些必要的代码需要改动,请读者自己思考。

1 / 52
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功