Windows程序设计三系软件工程教研室郑步芹办公室:系办公室楼506室手机:188006093591.教材:MFCWindows应用程序设计(第3版)任哲清华大学出版社2.教材结构课程介绍Windows程序设计课程的任务熟悉VisualStudio2008的开发环境掌握windows程序设计的过程;掌握各种消息的处理机制。学习并掌握使用API函数以及MFC进行可视化编程的方法和编程技巧,为今后适应系统软件的研究与开发打下扎实的基础。学习图形设备接口的有关概念,掌握绘图工具和颜色的设置与应用,熟悉常用的绘图函数。熟悉windows中的各种资源;熟练掌握各种资源的操作、创建过程。第1章Windows程序基础1.1Windows应用程序的基本概念1.2Windows的数据类型1.3窗口的创建和显示1.4事件、消息循环和窗口函数1.5Windows应用程序的结构1.6Windows程序代码重构1.1Windows应用程序的基本概念1.1.1一般概念1、Windows应用程序的特点具有图形窗口界面图1基于窗口的应用程序图2基于窗体(对话框)的应用程序Windows程序与普通程序之间最大的区别:具有图形窗口界面程序的进行是由用户和系统所发出的事件(键盘鼠标事件、系统事件等)推动(驱动)的1.1Windows应用程序的基本概念图3Windows应用程序,操作系统,计算机硬件之间的相互关系应用程序消息队列操作系统输入输出设备①②③④Windows程序设计是一种事件驱动的方式的程序设计模式。主要是基于消息的。1.1Windows应用程序的基本概念2.Windows程序运行原理调用API函数消息机制typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;1.1Windows应用程序的基本概念3.Windows操作系统发展历程Windows操作系统是目前世界上使用最广泛的操作系统。随着电脑硬件和软件系统的不断升级,微软的Windows操作系统也在不断升级,从16位、32位到64位操作系统。从最初的Windows1.0和Windows3.2到大家熟知的Windows95、Windows97、Windows98、Windows2000、WindowsMe、WindowsXP、WindowsServer、WindowsVista、Windows7、Windows8各种版本的持续更新,微软一直在尽力于Windows操作的开发和完善。目前最新的版本是Windows8,而微软正在研发Windows9。1.1Windows应用程序的基本概念1.1.2Windows内核、API和开发工具1、内核与API内核:Windows操作系统的核心代码API(ApplicationProgrammingInterface)应用程序接口:操作系统为了支持应用程序的设计与运行,Windows在自己的系统函数中向用户开放了一些可以由应用程序调用的函数,这些函数的集合就是API。2、Windows程序开发工具1.2Windows的数据类型1.2.1Windows常用的基本数据类型Windows所用的数据类型对应的基本数据类型说明BOOLbool布尔值BSTRunsignedshort*32位字符指针BYTEunsignedchar8位无符号整数COLORREFunsignedlong用作颜色值的32位值DWORDunsignedlong32位无符号整数,段地址和相关的偏移地址LONGlong32位带符号整数LPARAMlong作为参数传递给窗口过程或回调函数的32位值LPCSTRconstchar*指向字符串常量的32位指针LPSTRchar*指向字符串的32位指针LPVOIDvoid*指向未定义类型的32位指针LRESULTlong来自窗口过程或回调函数的32位返回值UINTunsignedint32位无符号整数WORDunsignedshort16位无符号整数WPARAMunsignedint当作参数传递给窗口过程或回调函数的32位值1.2Windows的数据类型Windows应用程序还提供了一些结构类型的数据,例如:typedefstructtag_POINT{LONGx,y;}POINT;typedefstructtag_RECT{LONGleft;LONGtop;LONGright;LONGbottom;}RECT;typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;1.2Windows的数据类型1.2.2Windows的一个特殊数据类型——句柄1、内核对象及其句柄内核对象:在内核内存空间创建的对象。句柄:为了标识内核对象所编制的一个4字节的整数编号。如:窗口句柄HWND图形设备环境句柄HDC程序实例句柄HINSTANCE位图句柄HBITMAP光标句柄HCUSOR图标句柄HICON字体句柄HFONT菜单句柄HMENU画笔句柄HPEN文件句柄HFILE画刷句柄HBRUSH1.2Windows的数据类型2、HINSTANCE句柄(应用程序实例句柄):代表一个内核对象,只不过这个内核对象是一个正在运行着的程序。1.2.3窗口类WNDCLASSTypedefstruct_WNDCLASS{UINTstyle;//窗口样式,一般设置为0WNDPROClpfnWndProc;//指向窗口函数的指针intcbClsExtra;//预留的扩展成员,一般设置为0intcbWndExtra;//预留的扩展成员,一般设置为0HANDLEhInstance;//与本窗口类关联的应用程序实例句柄HICONhIcon;//窗口图标句柄HCURSORhCursor;//窗口光标句柄HBRUSHhbrBackground;//窗口背景颜色刷句柄LPCTSTRlpszMenuName;//窗口菜单资源名LPCTSTRlpszClassName;//本窗口类名}WNDCLASS;1.2Windows的数据类型1.2.4Windows函数的调用说明_stdcall是pascal程序的缺省调用方式_cdecl是c的缺省调用方式#defineWINAPI_stdcall#defineCALLBACK_stdcall回调函数:由应用程序设计者设计,却由系统调用的函数。作业P381-1、1-2、1-3、1-4尝试调试书本例题1-1