vc第3章Windows编程基础课件_第1页
vc第3章Windows编程基础课件_第2页
vc第3章Windows编程基础课件_第3页
vc第3章Windows编程基础课件_第4页
vc第3章Windows编程基础课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

VisualC++第三章Windows编程基础2022/11/211VisualC++第三章2022/11/211内容提要Windows编程基础知识Windows应用程序常用消息Windows中的事件驱动程序设计Windows应用程序组成及编程步骤2022/11/212内容提要Windows编程基础知识2022/11/2123.1.Windows编程基础知识集资源和工具于一体的开发系统可视化开发系统(资源和工具的集成)源程序编辑器编译器调试工具语法检查程序修改运行监视应用程序Help和Setup开发工具函数库和系统函数开发工具资源管理器各种窗口和控件的编辑器例程库及Help其他功能2022/11/213.1.Windows编程基础知识集资源和工具于一体的开发系33.1.Windows编程基础知识Windows的程序设计语言“面向对象(Object-Oriented)”的语言VC++,VB和VJ适合于Windows的程序开发。Windows的程序中,对象是具有规范形态和操作模式的部件:窗口菜单按钮对话框程序模块2022/11/213.1.Windows编程基础知识Windows的程序设计语43.1.Windows编程基础知识Windows的程序设计方法传统编写法--使用API(ApplicationProgrammingInterface)交互式方法--使用MFC(MicrosoftFoundationClass)编写Windows程序主要工作:在创建对象为对象属性赋值2022/11/2153.1.Windows编程基础知识Windows的程序设计方应用程序接口API定义Win系统各种特殊函数及数据结构包含上千个可调用系统功能的标准API函数实现应用程序与Win系统间的标准程序接口API函数实现三种功能窗口管理函数——窗口的创建、移动和修改图形设备(GDI)函数——与设备无关的图形操作系统服务函数——与操作系统有关的多种服务3.1Windows编程基础知识2022/11/21应用程序接口API3.1Windows编程基础知识20226用MFC库交互式可视化编程MFC类库含有大量已定义好的类(class),可根据编程的需要,调用相应的类,或自定义有关的类实现可视化交互开发方式选择所需对象并确定其属性,搭建起应用程序的“大框架”,编写必要的细节代码段,构成完整的应用程序。3.1Windows编程基础知识2022/11/21用MFC库交互式可视化编程3.1Windows编程基础知识7API函数和MFC类库编程需了解的相关概念窗口(Window)事件驱动(Event-driven)句柄(Handle)消息(Message)3.1Windows编程基础知识2022/11/218API函数和MFC类库编程需了解的相关概念3.1Windo3.1Windows编程基础知识(1)窗口2022/11/213.1Windows编程基础知识(1)窗口2022/119窗口及其功能系统对应用程序管理的基本单位应用程序与用户之间交互的接口环境Window应用程序基本的操作单元Win应用程序编程创建一个或多个窗口Win应用程序运行窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与交换的过程。3.1Windows编程基础知识2022/11/2110窗口及其功能3.1Windows编程基础知识2022/11(2)事件驱动相关概念事件——一种情况或一种活动的发生、或一种指定状态的变化,例如:按下鼠标事件驱动——由描述事件发生的信息(消息)来驱动程序的执行。程序的执行取决于事件发生的顺序;消息的产生并不要求有次序之分。事件驱动编程方法针对事件或消息的处理进行;适于编写交互式程序。3.1Windows编程基础知识2022/11/2111(2)事件驱动相关概念3.1Windows编程基础知识2(3)句柄相关概念句柄——用于标识不同的对象和同类对象中不同的实例的标识符,一个其长度为4字节长整数值。句柄是Win应用程序编程的基础,应用程序通过句柄访问相应的对象信息。3.1Windows编程基础知识2022/11/2112(3)句柄相关概念3.1Windows编程基础知识202句柄标识的对象实例窗口按钮图标滚动条输出设备控件文件…...。常用句柄类型HWND

窗口句柄HINSTANCE

前实例句柄HCURSOR

光标句柄HFONT

字体句柄HPEN

画笔句柄HBRUSH

画刷句柄HDC

设备环境句柄HBITMAP

位图句柄 HICON

图标句柄HMENU

菜单句柄 HFILE

文件句柄3.1Windows编程基础知识2022/11/2113句柄标识的对象实例常用句柄类型3.1Windows编程基础3.1Windows编程基础知识2022/11/21143.1Windows编程基础知识2022/11/2114(4)消息相关概念应用程序利用消息与系统及其它应用程序进行信息交换。消息的三个组成部分:消息号:由事先定义好的消息名标识字参数(wParam):用于提供消息的附加信息长字参数(lParam):用于提供消息的附加信息附加信息与具体消息号的值有关3.1Windows编程基础知识2022/11/2115(4)消息相关概念附加信息与具体消息号的值有关3.1消息用结构MSG表示typedefstructtagMSG{HWNDhwnd;//窗口句柄,为null,则检索队的所有消息

UINTmessage;//消息号,由Windows.h中的宏定义来标识

WPARAMwParam;//消息的附加信息

LPARAMlParam;//消息的附加信息

DWORDtime;//指定消息送至队列的时间

POINTpt;//指定消息发送时屏幕光标的位置,}MSG;数据类型说明:

WindowsDataTypes

windef.h3.1Windows编程基础知识2022/11/21消息用结构MSG表示数据类型说明:WindowsData16消息的分类各种消息分类,分别以不同的前缀表示:BM——按钮控制消息。CB——组合框控制消息。DM——默认下压式按钮控制消息。EM——编辑控制消息。LB——列表框控制消息。SBM——滚动条控制消息。WM——窗口消息。3.1Windows编程基础知识2022/11/2117消息的分类3.1Windows编程基础知识2022/113.2.Windows应用程序常用消息窗口管理消息初始化消息输入消息系统消息剪贴板消息控制处理消息控制通知消息滚动条通知消息非用户区消息MDI消息DDE消息应用程序自定义的消息2022/11/21183.2.Windows应用程序常用消息窗口管理消息控制通知3.2.Windows应用程序常用消息(1)WM_LBUTTONDOWN:单击鼠标左键的消息,附加信息:lParam——当前光标位置低字节为X坐标值高字节为Y坐标值wParam——整数以标识鼠标键的按下状态MK_LBUTTON 按下鼠标左键MK_MBUTTON 按下鼠标中键MK_RBUTTON 按下鼠标右键2022/11/21193.2.Windows应用程序常用消息(1)WM_LBU3.2.Windows应用程序常用消息类似的鼠标左右键消息还有:WM_LBUTTONUP:放开左键;WM_RBUTTONDOWN:单击右键;WM_RBUTTONUP:放开右键;WM_LBUTTONDBLCLK:双击左键;WM_RBUTTONDBLCLK:双击右键。2022/11/21203.2.Windows应用程序常用消息类似的鼠标左右键消息3.2.Windows应用程序常用消息(2)WM_KEYDOWN:Postedtothewindowwiththekeyboardfocuswhenanonsystemkeyispressed.Anonsystem

keyisakeythatispressedwhentheALTkeyisnotpressed.wParam按下键的虚拟键码,标识按或放。lParam记录按键的重复次数、扫描码、转移代码及先前键的状态等信息。相似的消息:WM_KEYUP,放开非系统键时产生2022/11/21213.2.Windows应用程序常用消息(2)WM_KEY3.2.Windows应用程序常用消息(3)WM_CHAR:PostedtothewindowwiththekeyboardfocuswhenaWM_KEYDOWNmessageistranslatedbytheTranslateMessage

function.TheWM_CHARmessagecontainsthecharactercodeofthekeythatwaspressed.

wParam——按下键的ASCII码。lParam——与WM_KEYDOWN的相同。2022/11/21223.2.Windows应用程序常用消息(3)WM_CH3.2.Windows应用程序常用消息(4)WM_CREATE:由CreateWindow函数发出的消息。wParam——未用。lParam——个指向CREATESTRUCT数据结构的指针。(5)WM_CLOSE:关闭窗口时产生的消息。wParam和lParam均未用。(6)WM_DESTROY:由DestroyWiodow函数发出的消息。wParam和lParam均未用。2022/11/21233.2.Windows应用程序常用消息(4)WM_CRE3.2.Windows应用程序常用消息(7)WM_QUIT退出应用程序时由PostQuitMessage函数发出的消息。wParam——标识退出时的有关信息。lParam——未用。(8)WM_PAINT用户区移动或显示、用户窗口改变大小程序通过滚动条滚动窗口下拉式菜单关闭并需要恢复被覆盖的部分Windows清除对话框等对象,并需要恢复被覆盖的部分2022/11/21243.2.Windows应用程序常用消息(7)WM_QUI3.3Windows中的事件驱动程序设计计算平均成绩启动输入姓名输入第一次测试成绩输入第二次测试成绩输入第三次测试成绩计算平均成绩结束过程驱动方法启动消息处理结束输入姓名输入第一次成绩输入第二次成绩输入第三次成绩计算平均成绩事件驱动方法2022/11/21253.3Windows中的事件驱动程序设计计算平均成绩启动输3.4.Windows应用程序组成及编程步骤3.4.1应用程序的组成3.4.2源程序组成结构3.4.3应用程序举例2022/11/21263.4.Windows应用程序组成及编程步骤3.4.1应用3.4.1应用程序的组成一个完整的Windows应用程序通常包含如下几种类型的文件:C/C++语言源程序文件(.c或.cpp)头文件(.h) 模块定义文件(.def) 资源描述文件(.rc)项目文件(.mak)…...2022/11/21273.4.1应用程序的组成一个完整的Windows应用程序通3.4.2源程序组成结构WinMain和WndProc是Windows应用程序的主体入口函数WinMainEveryWindowsprogramincludesanentry-pointfunctionthatisnamedeitherWinMainorwWinMain.所有应用程序的入口,类似Main函数,完成一系列的定义和初始化,并产生消息循环窗口函数WndProcAnapplication-definedfunctionthatprocessesmessagessenttoawindow.处理消息2022/11/21283.4.2源程序组成结构WinMain和WndProc是W三个基本的组成部分:函数说明初始化消息循环功能注册窗口类,建立窗口及初始化进入消息循环,根据接受的消息调用相应的处理过程当消息循环检索到WM_QUIT时终止程序运行WinMain函数2022/11/21三个基本的组成部分:WinMain函数2022/11/2129WinMain函数—(1)函数说明intWINAPIWinMain(HINSTANCEhThisInst,∥应用程序当前实例句柄

HINSTANCEhPrevInst,∥应用程序其他实例句柄

LPSTRlpszCmdLine,∥指向命令行参数的指针

IntnCmdShow ∥初始窗口显示方式的整数值标识)注意!Win是多任务管理的,同一应用程序可能同时存在多个窗口,Win系统对每个窗口的执行称为一个实例,并用一个实例句柄来唯一标识2022/11/21WinMain函数—(1)函数说明注意!Win是多任务管理30WinMain函数—(2)初始化窗口类的定义:定义窗口的形式与功能LoadIcon()LoadCursor()

GetStockObject()窗口类的注册:窗口类必须先注册后使用RegisterClass()创建窗口实例CreateWindow()显示窗口ShowWindow()UpdateWindow()2022/11/21WinMain函数—(2)初始化窗口类的定义:定义窗口的31(a)窗口类定义通过给窗口类WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。窗口类定义常用以下函数:LoadIcon加载一个窗口图标。其原型为:HICONLoadIcon(HINSTANCEhInstance,LPCTSTRlpIconName)图标资源名或系统预定义图标标识名图标资源模块句柄WinMain函数—(2)初始化2022/11/21(a)窗口类定义图标资源名或系统预定义图标标识名图标资源模块32LoadCursor加载一个窗口光标HCURSORLoadCursor(HINSTANCEhInstance, LPCTSTRlpCursorName)GetStockObject获取系统提供的背景刷HBRUSHGetStockObject(intnBrush);光标资源名或系统预定义图标标识名光标资源模块句柄WinMain函数—(2)初始化2022/11/21LoadCursor加载一个窗口光标光标资源名或系统预定义图33(b)注册窗口类Win系统提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。由函数RegisterClass()实现注册。

RegisterClass(&wndclass);//wndclass为窗口类结构

RegisterClass函数的返回为布尔值,注册成功则返回真WinMain函数—(2)初始化2022/11/21(b)注册窗口类WinMain函数—(2)初始化202234(c)创建窗口示例HWNDCreateWindow(LPCTSTRlpszClassName,∥窗口类名

LPCTSTRlpszTitle, ∥窗口标题名

DWORDdwStyle, ∥创建窗口的样式

intx,y, ∥窗口左上角坐标

intnWidth,nHeight,∥窗口宽度和度高

HWNDhwndParent, ∥该窗口的父窗口句柄

HWENUhMenu, ∥窗口主菜单句柄

HINSTANCEhInstance,∥应用程序当前句柄

LPVOIDlpParam∥传递给窗口的参数值的指针

)WinMain函数—(2)初始化2022/11/21(c)创建窗口示例WinMain函数—(2)初始化2035WinMain函数—(2)初始化2022/11/21WinMain函数—(2)初始化2022/11/2136(d)显示窗口调用ShowWindow函数在屏幕上显示窗口ShowWindow(hwnd,nCmdshow);显示窗口后,调用UpdateWindow更新并绘制用户区,并发出WM_PAINT消息。

UpdateWindow(hwnd);WinMain函数—(2)初始化2022/11/21(d)显示窗口WinMain函数—(2)初始化2022/37消息循环的常见格式如下:MSGMsg;…while(GetMessage(&Msg,NULL,0,0)){TranslateMessage(&Msg);DispatchMessage(&Msg);}WinMain函数—(3)消息循环2022/11/2138消息循环的常见格式如下:WinMain函数—(3)消息循环2GetMessage从消息队列中读取一条消息,并将消息放在MSG结构中返回零值,即检索到WM_QUIT消息时,程序结束循环并退出TranslateMessage将消息的虚拟键转换为字符信息DispatchMessage将消息传送到指定窗口函数WinMain函数—(3)消息循环2022/11/2139GetMessageWinMain函数—(3)消息循环202WinMain函数—(3)消息循环2022/11/21WinMain函数—(3)消息循环2022/11/2140窗口函数WndProc定义了应用程序对接收到的不同消息的响应包含了对各种可能接收到的消息的处理过程由一个或多个switch语句组成每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。2022/11/2141窗口函数WndProc定义了应用程序对接收到的不同消息的响应窗口函数WndProcLRESULTCALLBACKWndProc( HWNDhwnd, UINTmessgae,WPARAMwParam,LPARAMlParam){…switch(message) ∥message为标识的消息

{case… …break;…caseWM_DESTROY:PostQuitMessage(0);default:returnDefWindowProc(hwnd,message,wParam,lParam);}return(0);}为未定义处理过程的消息提供缺省处理在消息处理程序段中一般都有对WM_DESTROY的处理,该消息是关闭窗口时发出的。它向应用程序发出WM_QUIT消息,请求退出处理函数:voidPostQuitMessage(intnExitCode)//nExitCode为应用程序的退出代码2022/11/2142窗口函数WndProcLRESULTCALLBACKWnDefWindowProcfunctionCallsthedefaultwindowproceduretoprovidedefaultprocessingforanywindowmessagesthatanapplicationdoesnotprocess.Thisfunctionensuresthateverymessageisprocessed.DefWindowProc

iscalledwiththesameparametersreceivedbythewindowprocedure.窗口函数WndProc2022/11/2143DefWindowProcfunction窗口函数WndP数据类型Windows.h包含了其它Windows头文件,定义了Windows应用程序中包含种类繁多的数据类型。WINDEF.HWINNT.HWINBASE.HWINUSER.HWINGDI.H2022/11/21数据类型Windows.h2022/11/2144一些重要的数据结构MSG包含一个消息的全部信息,是消息发送的格式WINDCLASS包含一个窗口类的全部信息及属性POINT:定义了屏幕上或窗口中的一个点的X和Y坐标RECT:定义了一个矩形区域并及其左上角和右下角的坐标2022/11/21一些重要的数据结构MSG2022/11/21453.4.3应用程序举例源代码:TestAPI2022/11/21463.4.3应用程序举例2022/11/2146VisualC++第三章Windows编程基础2022/11/2147VisualC++第三章2022/11/211内容提要Windows编程基础知识Windows应用程序常用消息Windows中的事件驱动程序设计Windows应用程序组成及编程步骤2022/11/2148内容提要Windows编程基础知识2022/11/2123.1.Windows编程基础知识集资源和工具于一体的开发系统可视化开发系统(资源和工具的集成)源程序编辑器编译器调试工具语法检查程序修改运行监视应用程序Help和Setup开发工具函数库和系统函数开发工具资源管理器各种窗口和控件的编辑器例程库及Help其他功能2022/11/213.1.Windows编程基础知识集资源和工具于一体的开发系493.1.Windows编程基础知识Windows的程序设计语言“面向对象(Object-Oriented)”的语言VC++,VB和VJ适合于Windows的程序开发。Windows的程序中,对象是具有规范形态和操作模式的部件:窗口菜单按钮对话框程序模块2022/11/213.1.Windows编程基础知识Windows的程序设计语503.1.Windows编程基础知识Windows的程序设计方法传统编写法--使用API(ApplicationProgrammingInterface)交互式方法--使用MFC(MicrosoftFoundationClass)编写Windows程序主要工作:在创建对象为对象属性赋值2022/11/21513.1.Windows编程基础知识Windows的程序设计方应用程序接口API定义Win系统各种特殊函数及数据结构包含上千个可调用系统功能的标准API函数实现应用程序与Win系统间的标准程序接口API函数实现三种功能窗口管理函数——窗口的创建、移动和修改图形设备(GDI)函数——与设备无关的图形操作系统服务函数——与操作系统有关的多种服务3.1Windows编程基础知识2022/11/21应用程序接口API3.1Windows编程基础知识202252用MFC库交互式可视化编程MFC类库含有大量已定义好的类(class),可根据编程的需要,调用相应的类,或自定义有关的类实现可视化交互开发方式选择所需对象并确定其属性,搭建起应用程序的“大框架”,编写必要的细节代码段,构成完整的应用程序。3.1Windows编程基础知识2022/11/21用MFC库交互式可视化编程3.1Windows编程基础知识53API函数和MFC类库编程需了解的相关概念窗口(Window)事件驱动(Event-driven)句柄(Handle)消息(Message)3.1Windows编程基础知识2022/11/2154API函数和MFC类库编程需了解的相关概念3.1Windo3.1Windows编程基础知识(1)窗口2022/11/213.1Windows编程基础知识(1)窗口2022/1155窗口及其功能系统对应用程序管理的基本单位应用程序与用户之间交互的接口环境Window应用程序基本的操作单元Win应用程序编程创建一个或多个窗口Win应用程序运行窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与交换的过程。3.1Windows编程基础知识2022/11/2156窗口及其功能3.1Windows编程基础知识2022/11(2)事件驱动相关概念事件——一种情况或一种活动的发生、或一种指定状态的变化,例如:按下鼠标事件驱动——由描述事件发生的信息(消息)来驱动程序的执行。程序的执行取决于事件发生的顺序;消息的产生并不要求有次序之分。事件驱动编程方法针对事件或消息的处理进行;适于编写交互式程序。3.1Windows编程基础知识2022/11/2157(2)事件驱动相关概念3.1Windows编程基础知识2(3)句柄相关概念句柄——用于标识不同的对象和同类对象中不同的实例的标识符,一个其长度为4字节长整数值。句柄是Win应用程序编程的基础,应用程序通过句柄访问相应的对象信息。3.1Windows编程基础知识2022/11/2158(3)句柄相关概念3.1Windows编程基础知识202句柄标识的对象实例窗口按钮图标滚动条输出设备控件文件…...。常用句柄类型HWND

窗口句柄HINSTANCE

前实例句柄HCURSOR

光标句柄HFONT

字体句柄HPEN

画笔句柄HBRUSH

画刷句柄HDC

设备环境句柄HBITMAP

位图句柄 HICON

图标句柄HMENU

菜单句柄 HFILE

文件句柄3.1Windows编程基础知识2022/11/2159句柄标识的对象实例常用句柄类型3.1Windows编程基础3.1Windows编程基础知识2022/11/21603.1Windows编程基础知识2022/11/2114(4)消息相关概念应用程序利用消息与系统及其它应用程序进行信息交换。消息的三个组成部分:消息号:由事先定义好的消息名标识字参数(wParam):用于提供消息的附加信息长字参数(lParam):用于提供消息的附加信息附加信息与具体消息号的值有关3.1Windows编程基础知识2022/11/2161(4)消息相关概念附加信息与具体消息号的值有关3.1消息用结构MSG表示typedefstructtagMSG{HWNDhwnd;//窗口句柄,为null,则检索队的所有消息

UINTmessage;//消息号,由Windows.h中的宏定义来标识

WPARAMwParam;//消息的附加信息

LPARAMlParam;//消息的附加信息

DWORDtime;//指定消息送至队列的时间

POINTpt;//指定消息发送时屏幕光标的位置,}MSG;数据类型说明:

WindowsDataTypes

windef.h3.1Windows编程基础知识2022/11/21消息用结构MSG表示数据类型说明:WindowsData62消息的分类各种消息分类,分别以不同的前缀表示:BM——按钮控制消息。CB——组合框控制消息。DM——默认下压式按钮控制消息。EM——编辑控制消息。LB——列表框控制消息。SBM——滚动条控制消息。WM——窗口消息。3.1Windows编程基础知识2022/11/2163消息的分类3.1Windows编程基础知识2022/113.2.Windows应用程序常用消息窗口管理消息初始化消息输入消息系统消息剪贴板消息控制处理消息控制通知消息滚动条通知消息非用户区消息MDI消息DDE消息应用程序自定义的消息2022/11/21643.2.Windows应用程序常用消息窗口管理消息控制通知3.2.Windows应用程序常用消息(1)WM_LBUTTONDOWN:单击鼠标左键的消息,附加信息:lParam——当前光标位置低字节为X坐标值高字节为Y坐标值wParam——整数以标识鼠标键的按下状态MK_LBUTTON 按下鼠标左键MK_MBUTTON 按下鼠标中键MK_RBUTTON 按下鼠标右键2022/11/21653.2.Windows应用程序常用消息(1)WM_LBU3.2.Windows应用程序常用消息类似的鼠标左右键消息还有:WM_LBUTTONUP:放开左键;WM_RBUTTONDOWN:单击右键;WM_RBUTTONUP:放开右键;WM_LBUTTONDBLCLK:双击左键;WM_RBUTTONDBLCLK:双击右键。2022/11/21663.2.Windows应用程序常用消息类似的鼠标左右键消息3.2.Windows应用程序常用消息(2)WM_KEYDOWN:Postedtothewindowwiththekeyboardfocuswhenanonsystemkeyispressed.Anonsystem

keyisakeythatispressedwhentheALTkeyisnotpressed.wParam按下键的虚拟键码,标识按或放。lParam记录按键的重复次数、扫描码、转移代码及先前键的状态等信息。相似的消息:WM_KEYUP,放开非系统键时产生2022/11/21673.2.Windows应用程序常用消息(2)WM_KEY3.2.Windows应用程序常用消息(3)WM_CHAR:PostedtothewindowwiththekeyboardfocuswhenaWM_KEYDOWNmessageistranslatedbytheTranslateMessage

function.TheWM_CHARmessagecontainsthecharactercodeofthekeythatwaspressed.

wParam——按下键的ASCII码。lParam——与WM_KEYDOWN的相同。2022/11/21683.2.Windows应用程序常用消息(3)WM_CH3.2.Windows应用程序常用消息(4)WM_CREATE:由CreateWindow函数发出的消息。wParam——未用。lParam——个指向CREATESTRUCT数据结构的指针。(5)WM_CLOSE:关闭窗口时产生的消息。wParam和lParam均未用。(6)WM_DESTROY:由DestroyWiodow函数发出的消息。wParam和lParam均未用。2022/11/21693.2.Windows应用程序常用消息(4)WM_CRE3.2.Windows应用程序常用消息(7)WM_QUIT退出应用程序时由PostQuitMessage函数发出的消息。wParam——标识退出时的有关信息。lParam——未用。(8)WM_PAINT用户区移动或显示、用户窗口改变大小程序通过滚动条滚动窗口下拉式菜单关闭并需要恢复被覆盖的部分Windows清除对话框等对象,并需要恢复被覆盖的部分2022/11/21703.2.Windows应用程序常用消息(7)WM_QUI3.3Windows中的事件驱动程序设计计算平均成绩启动输入姓名输入第一次测试成绩输入第二次测试成绩输入第三次测试成绩计算平均成绩结束过程驱动方法启动消息处理结束输入姓名输入第一次成绩输入第二次成绩输入第三次成绩计算平均成绩事件驱动方法2022/11/21713.3Windows中的事件驱动程序设计计算平均成绩启动输3.4.Windows应用程序组成及编程步骤3.4.1应用程序的组成3.4.2源程序组成结构3.4.3应用程序举例2022/11/21723.4.Windows应用程序组成及编程步骤3.4.1应用3.4.1应用程序的组成一个完整的Windows应用程序通常包含如下几种类型的文件:C/C++语言源程序文件(.c或.cpp)头文件(.h) 模块定义文件(.def) 资源描述文件(.rc)项目文件(.mak)…...2022/11/21733.4.1应用程序的组成一个完整的Windows应用程序通3.4.2源程序组成结构WinMain和WndProc是Windows应用程序的主体入口函数WinMainEveryWindowsprogramincludesanentry-pointfunctionthatisnamedeitherWinMainorwWinMain.所有应用程序的入口,类似Main函数,完成一系列的定义和初始化,并产生消息循环窗口函数WndProcAnapplication-definedfunctionthatprocessesmessagessenttoawindow.处理消息2022/11/21743.4.2源程序组成结构WinMain和WndProc是W三个基本的组成部分:函数说明初始化消息循环功能注册窗口类,建立窗口及初始化进入消息循环,根据接受的消息调用相应的处理过程当消息循环检索到WM_QUIT时终止程序运行WinMain函数2022/11/21三个基本的组成部分:WinMain函数2022/11/2175WinMain函数—(1)函数说明intWINAPIWinMain(HINSTANCEhThisInst,∥应用程序当前实例句柄

HINSTANCEhPrevInst,∥应用程序其他实例句柄

LPSTRlpszCmdLine,∥指向命令行参数的指针

IntnCmdShow ∥初始窗口显示方式的整数值标识)注意!Win是多任务管理的,同一应用程序可能同时存在多个窗口,Win系统对每个窗口的执行称为一个实例,并用一个实例句柄来唯一标识2022/11/21WinMain函数—(1)函数说明注意!Win是多任务管理76WinMain函数—(2)初始化窗口类的定义:定义窗口的形式与功能LoadIcon()LoadCursor()

GetStockObject()窗口类的注册:窗口类必须先注册后使用RegisterClass()创建窗口实例CreateWindow()显示窗口ShowWindow()UpdateWindow()2022/11/21WinMain函数—(2)初始化窗口类的定义:定义窗口的77(a)窗口类定义通过给窗口类WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。窗口类定义常用以下函数:LoadIcon加载一个窗口图标。其原型为:HICONLoadIcon(HINSTANCEhInstance,LPCTSTRlpIconName)图标资源名或系统预定义图标标识名图标资源模块句柄WinMain函数—(2)初始化2022/11/21(a)窗口类定义图标资源名或系统预定义图标标识名图标资源模块78LoadCursor加载一个窗口光标HCURSORLoadCursor(HINSTANCEhInstance, LPCTSTRlpCursorName)GetStockObject获取系统提供的背景刷HBRUSHGetStockObject(intnBrush);光标资源名或系统预定义图标标识名光标资源模块句柄WinMain函数—(2)初始化2022/11/21LoadCursor加载一个窗口光标光标资源名或系统预定义图79(b)注册窗口类Win系统提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。由函数RegisterClass()实现注册。

RegisterClass(&wndclass);//wndclass为窗口类结构

RegisterClass函数的返回为布尔值,注册成功则返回真WinMain函数—(2)初始化2022/11/21(b)注册窗口类WinMain函数—(2)初始化202280(c)创建窗口示例HWNDCreateWindow(LPCTSTRlpszClassName,∥窗口类名

LPCTSTRlpszTitle, ∥窗口标题名

DWORDdwStyle, ∥创建窗口的样式

intx,y, ∥窗口左上角坐标

intnWidth,nHeight,∥窗口宽度和度高

HWNDhwndParent, ∥该窗口的父窗口句柄

HWENUhMenu, ∥窗口主菜单句柄

HINSTANCEhInstance,∥应用程序当前句柄

LPVOIDlpParam∥传递给窗口的参数值的指针

)WinMain函数—(2)初始化2022/11/21(c)创建窗口示例WinMain函数—(2)初始化2081WinMain函数—(2)初始化2022/11/21WinMain函数—(2)初始化2022/11/2182(d)显示窗口调用ShowWindow函数在屏幕上显示窗口ShowWindow(hwnd,nCmdshow);显示窗口后,调用UpdateWindow更新并绘制用户区,并发出WM_PAINT消息。

UpdateWindow(hwnd);WinMain函数—(2)初

温馨提示

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

评论

0/150

提交评论