C++07第01章-Windows编程基础VS2010开发环境

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

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

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

资源描述

第01章Windows编程基础VS2010开发环境Windows编程基础VS2010开发环境第01章第01章Windows编程基础VS2010开发环境主要内容1.2VS2010开发环境1.1Windows程序结构第01章Windows编程基础VS2010开发环境1.1.1Windows操作系统简介MicrosoftWindows是一个基于Intelx86微处理芯片的个人计算机上的具有图形用户的多任务和多窗口的操作系统,它是对MS-DOS操作系统的扩展和延伸。与MS-DOS操作系统相比,它有许多优越之处:首先,它提供了比MS-DOS字符界面更为直观、友好的图形用户界面;其次,它可以一次运行多个程序(即多任务),方便了用户的操作,提高了机器的利用率;再次,Windows环境下的应用程序具有一致的外观和用户接口,用户只需要熟悉其中一两个程序,就可以触类旁通学会使用别的Windows应用程序。另外,Windows还具有更好的虚拟内存管理和设备无关特性等。由于Windows具有以上突出优点,Windows平台上的软件开发和程序设计已成为主流。第01章Windows编程基础VS2010开发环境1.1.1Windows操作系统简介Windows之所以取得成功,主要在于它具有以下优点:1.直观、高效的面向对象的图形用户界面,易学易用。2.用户界面统一、友好、漂亮。3.丰富的设备无关及图形操作。4.多任务。虽然同一时刻计算机可以运行多个应用程序,但仅有一个是处于活动状态的,其标题栏呈现高亮颜色。一个活动的程序是指当前能够接收用户键盘输入的程序。第01章Windows编程基础VS2010开发环境1.1.2应用程序结构1.应用程序的组成一个完整的Windows应用程序通常由表1-1所示五种类型的文件组成。第01章Windows编程基础VS2010开发环境2.源程序组织结构Windows应用程序具有相对固定的基本结构,其中由入口函数WinMain和窗口函数构成基本框架,并包含各种数据类型,数据结构与函数等。入口函数WinMain和窗口函数是Windows应用程序的技术基础。WinMain函数是所有Windows应用程序的入口,类似C语言中的main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。WinMain函数实现以下功能1。注册窗口类,建立窗口及执行其他必要的初始化工作。2.进入消息循环,根据从应用程序消息队列接收的消息,调用相应的处理过程。3.当消息循环检索到WM_QUIT消息时终止程序运行。WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。第01章Windows编程基础VS2010开发环境WinMain函数声明intWINAPIWinMain(HINSTANCEhThisInst,//应用程序当前实例句柄HINSTANCEhPrevInst,//应用程序以前实例句柄LPSTRlpszCmdLine,//指向程序命令行参数指针intnCmdShow//应用程序开始执行时窗口显示方式,整数标识);值得注意的是,Windows应用程序可能并行地多次执行,因而可能出现同一个应用程序的多个窗口同时存在的情况,这也是Windows操作系统所进行的多任务管理。第01章Windows编程基础VS2010开发环境WinMain函数声明Windows系统将应用程序每一次执行称为该应用程序的一个实例(instance),并使用一个实例句柄唯一地标识它。Windows应用程序和DOS应用程序的重要区别之一就是Windows应用程序在启动时,需要进行初始化工作。初始化包括窗口类的定义、注册、创建窗口实例和显示窗口四部分。(1)窗口类定义在应用程序中,窗口类定义了窗口的形式与功能。窗口类定义通过给窗口类数据结构赋值来完成的,该数据结构中包含窗口类的各种属性。第01章Windows编程基础VS2010开发环境WinMain函数声明窗口类定义常用以下函数完成:LoadIcon函数LoadIcon函数的作用是在应用程序中加载一个窗口图标。其原型为:HICONLoadIcon(HINSTANCEhInstance,//图标资源所在的模块句柄;如果为NULL,则使用系统预定义图标LPCTSTRlpIconName);//图标资源名或系统预定义图标标识名LoadCursor函数LoadCursor函数的作用是在应用程序中加载一个窗口光标。第01章Windows编程基础VS2010开发环境其原型为:HCRSORLoadCursor(HINSTANCEhInstance,//光标资源所在模块句柄;如为NULL,则使用系统预定义光标LPCTSTRlpCursorName//光标资源名或系统预定义光标标识名。);GetStockObject函数应用程序还经常调用函数GetStockObject获取系统提供的背景刷子,其原型为:HBRUSHGetStockObject(intnbrush);//nBrush:为系统提供的背景画刷标识名。WinMain函数声明第01章Windows编程基础VS2010开发环境(2)注册窗口类Windows系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用,窗口类的注册由函数RegisterClass()实现。其形式为:RegisterClass(&wndclass);//wndclass为窗口类结构RegisterClass函数的返回值为布尔类型,注册成功则返回TRUE,否则返回FALSE。(3)创建窗口创建一个窗口类实例由函数CreateWindow()实现,该函数原型为WinMain函数声明第01章Windows编程基础VS2010开发环境WinMain函数声明第01章Windows编程基础VS2010开发环境WinMain函数声明第01章Windows编程基础VS2010开发环境在实际应用中,可定义组合式的窗口样式,例如下面的语句表示带有垂直和水平滚动条的弹出式窗口:WM_HSCROLL|WM_VSCROLL|WM_POPUP(4)显示窗口ShowWindow(hwnd,nCmdShow);其中,hwnd为窗口句柄,nCmdShow为窗口显示方式标识,表1-3列出了常用显示方式标识及说明。WinMain函数声明第01章Windows编程基础VS2010开发环境WinMain函数声明第01章Windows编程基础VS2010开发环境3.消息循环Windows应用程序的运行以消息为核心,Windows将产生的消息放入应用程序的消息队列中,而应用程序的WinMain函数从消息循环提取队列中的消息,并将其传递给窗口函数的相应过程处理。消息循环的常见格式如下:MSGMsg…while(GetMessage(&Msg,NULL,0,0)){TranslateMessage(&Msg);DispatchMessage(&Msg);}第01章Windows编程基础VS2010开发环境3.消息循环其中,函数GetMessage的作用是从消息队列中读取一条消息,并将消息放在一个MSG结构中,其形式为:GetMessage(lpMSG,//指向MSG结构指针hwnd,nMsgFilterMin,//用于消息过滤的最小消息号nMsgFiltermax//用于消息过滤的最大消息号);通过设置参数nMsgFilterMin和nMsgFilterMax可实现消息的过滤,即仅处理所确定的消息号范围内的消息。如果两个参数都为0,则不过滤消息。第01章Windows编程基础VS2010开发环境TranslateMessage函数负责将消息的虚拟键转换为字符信息,其形式为:TranslateMesage(lpMSG);DispatchMessage函数将参数lpMSG指向的消息传送到指定窗口函数,其形式为:DispatchMessage(lpMSG);当GetMessage函数返回0,即检索到WM_QUIT消息时,程序将结束循环并退出。4.窗口函数窗口函数定义了应用程序对接收到不同消息的响应,其中包含了应用程序对各种可能接收到消息的处理过程,是消息处理分支控制语句的集合,通常,窗口函数由一个或多个switch语句组成。每一条case语句对应一种消息,当3.消息循环第01章Windows编程基础VS2010开发环境应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。窗口函数是应用程序处理接收到消息的函数,其中包含了应用程序对各种可能接收到消息的处理过程。窗口函数的一般形式如下:LRESULTCALLBACKWndProc(HWNDhwnd,//窗口句柄UINTmessage,//代表所处理消息的消息值WPARAMwParam,//消息的附加参数LPARAMlParam//消息的附加参数3.消息循环第01章Windows编程基础VS2010开发环境3.消息循环){……switch(message)//message为标识消息的消息值{case……break;caseWM_DESTROY:PostQuitMessage(0);break;第01章Windows编程基础VS2010开发环境3.消息循环Default:returnDefWindowProc(hwnd,messagem,wParam,lParam);}return(0);}窗口函数的主体是消息处理语句,该语句由一系列case语句组成。程序员只需根据窗口可能收到的消息在case语句中编写相应的处理程序段即可。在case语句的消息处理程序段中一般都有对消息WM_DESTROY的处理。如前所述该消息是关闭窗口时发出的。一般情况下,应用程序调用函数第01章Windows编程基础VS2010开发环境3.消息循环PostQuitMessage响应这条消息。PostQuitMessage函数的原型如下:voidPostQuitMessage(intnExitCode);//nExitCode为应用程序退出代码函数PostQuitMessage的作用是向应用程序发出WM_QUIT消息,请求退出。除此之外,应用程序通过在消息处理程序段中加入如下语句,为未定义处理过程的消息提供默认处理:default:returnDefWindowProc(hwnd,message,wParam,lParam);函数DefWindowProc是系统默认的处理过程,以保证所有发送到该窗口的消息均得以处理。第01章Windows编程基础VS2010开发环境(1)数据类型Windows应用程序的源程序中包含了种类繁多的数据类型,windows.h是用户调用系统功能的关键,该文件中定义了Windows系统使用的数据类型,其中包括许多简单类型和结构类型。(2)数据结构WindowsC语言程序数据结构比一般的C语言数据结构复杂,常用的数据结构有:①MSGMSG结构中包含一个消息的全部信息,既是消息发送的格式,也是Windows编程中最基本的数据结构之一。有关MSG结构的定义参考有关资料。3.消息循环第01章Windows编程基础VS2010开发环境RECT结构定义了一个矩形区域,其中包含该矩形区域的左上角和右下角两个点的X坐标和Y坐标。其定义如下:typedefstructtagRect{LONGleft;//矩形框左上角X坐标LONGtop;//矩形框左上角Y坐标LONGright;//矩形框右上角X坐标LONGbottom;//矩形框右上角Y坐标3.消息循环第01章Windows编程基础VS2010开发环境②WNDCLASSWNDCLASS结构包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一。应用程序通过定义一个窗口类确定

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

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

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

×
保存成功