信息系统201-Windows消息机制

上传人:M****1 文档编号:567914059 上传时间:2024-07-22 格式:PPT 页数:59 大小:637.50KB
返回 下载 相关 举报
信息系统201-Windows消息机制_第1页
第1页 / 共59页
信息系统201-Windows消息机制_第2页
第2页 / 共59页
信息系统201-Windows消息机制_第3页
第3页 / 共59页
信息系统201-Windows消息机制_第4页
第4页 / 共59页
信息系统201-Windows消息机制_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《信息系统201-Windows消息机制》由会员分享,可在线阅读,更多相关《信息系统201-Windows消息机制(59页珍藏版)》请在金锄头文库上搜索。

1、信息系统技术基础信息系统技术基础-2授课老师:王志宏;王长军实验老师:王长军2021/6/161Contact InformationlName:王长军lOffice:721lTel:62378372(O);13816261856(M)lEmail:lPersonalInformationl2007-Present物流系,DHUl2005-2006ComputerSystemDivision,SECl2002-2005SJTU2021/6/162课程概要企业信息化、政府信息化和社会信息化孕育着巨大的软件市场企业信息化、政府信息化和社会信息化孕育着巨大的软件市场新技术(新技术(IPV6、3G、移

2、动、移动IP、Wibro、蓝牙、蓝牙、RFID)驱动软件市场)驱动软件市场新商业模式(新商业模式(E-Commerce、M-Commerce)拉动软件市场)拉动软件市场软件是软件是IT的核心与灵魂的核心与灵魂2021/6/163课程概要l王志宏l操作系统相关l王长军l软件项目开发基础lWindowsAPI编程基础(消息机制;进程/线程;图形接口)l软件项目实施基础2021/6/164Windows消息机制王长军2007年7月2021/6/165讲授内容l1. 课程背景课程背景l2. Windows程序的特点程序的特点l3. 事件与消息系统事件与消息系统 l4. Windows程序的基本结构程序

3、的基本结构l5. 实验实验:利用利用API 开发开发Windows程序实例程序实例2021/6/1661.1预备知识lWindows操作系统:用过吧!用过吧!l一门编程语言:C/VB,学过吧!,学过吧!(C#, Java, Delphi)l一个适合Windows程序设计的编译器和开发环境:Microsoft Visual C+ 6.0/ Visual Basic 6.02021/6/1671.2课程目标l不是编程lAPI(ApplicationProgrammingInterface)而不是MFC(MicrosoftFoundationClass)l消化”消息”2021/6/1681.3Win

4、dows相关lAPI就是应用程序编程接口。它是能用来操作组件、应用程序或者操作系统的一组函数。典型的情况下,API由一个或多个提供某种特殊功能的DLL组成l每个Windows应用程序都直接或间接地使用了WindowsAPIl随着Windows操作系统的发展,WindowsAPI的内容也在不断扩充之中2021/6/1691.3Windows相关MS-DOSIBM-PC有限的I/O函数1981OS硬件MS1.03.016bitHWAPI函数1983图形环境NTXP16/32bitHWAPI函数1993图形环境Vista32/64bitHWAPI函数20063D图形环境过程驱动过程驱动消息驱动消息驱

5、动2021/6/16101.3Windows相关NTXP32bitHWAPI函数1993图形环境Vista32/64bitHWAPI函数20063D图形环境MFC(MicrosoftFoundationClassLibrary)WPF(WindowsPresentationFoundation)WCF(WindowsCommunicationFoundation)WWF(WindowsWorkflowFoundation)2021/6/16111.3Windows相关lDOS与Windows驱动机制的区别lDOS是过程驱动l在等待用户输入过程中,所有输入设备(资源)都被“等待”过程抢占了。lW

6、indows是消息(事件)驱动2021/6/16122.Windows程序的特点l2.1图文图文l2.2消息消息l2.3整合整合2021/6/16132.1图文l1不仅是黑底白字不仅是黑底白字l2. 而是而是 l框架菜单按钮滚动条框架菜单按钮滚动条l称为窗口要素称为窗口要素l3. 窗口类型窗口类型 lConsole 文字类型文字类型lWindow 菜单菜单+用户区域用户区域lDialoglMessage Boxl4. 实现途径实现途径GDI(图形设备接口,(图形设备接口,GDI32.dll)2021/6/16142.2消息l不再是循规蹈矩不再是循规蹈矩 而是而是Messagebased,eve

7、ntdrivenl窗口程序的主要任务是人机交互l除非人主动结束任务,程序以while循环为主体框架l人不断进行各种输入,计算机不断响应,形成“输入”“响应”的程序结构2021/6/16152.2消息l各种类型的“输入”,以消息格式存在lGetMessage()取走一个消息l对事件的响应,即事件驱动lDispatchMessage()处理消息l实现途径实现途径User32.dll2021/6/16162.3整合lMSWindows结构lOS系统服务(KERNEL):内存管理、程序加载(包括DLL)、任务调度、文件管理l用户接口(USER):窗口和消息管理,以及菜单、控制、对话框、定时器等l图形设

8、备接口(GDI, Graphic Device Interface):管理显示器,为USER与应用程序提供与硬件设备独立的接口l对应的,API函数也分为三类:l系统服务;管理和图形设备函数2021/6/16172.3整合.DLG.DLG.BMP.BMP.ICO.ICO.CUR.CUR.FON.FON.RC.RC.H.H.C.C.OBJ.OBJ.LIB.LIBDLL ImportDLL Import.DEF.DEFRC compilerRC compilerText EditorText EditorDialog EditorDialog EditorImage EditorImage Edit

9、orFont EditorFont EditorC CompilerC CompilerLINKERLINKER.EXE.EXE.RES.RES2021/6/16183.事件与消息系统l3.1事件和事件驱动事件和事件驱动l3.2消息系统消息系统l3.3一个具体的窗口程序一个具体的窗口程序2021/6/16193.1事件和事件驱动lWindows程序为消息而“生”,因消息而“死”l那么,消息从何而来?Windows操作环境中,无论是系统产生的动作或用户运行应用程序产生的动作,称为事件(Events)产生的消息(Message)。l那么,事件又从何而来?l通过输入设备,如键盘和鼠标l通过屏幕上可视

10、的对象,如菜单、工具栏按钮、滚动条和对话框上的控件l来自Windows内部2021/6/1620基于事件驱动的程序模型3.1事件和事件驱动2021/6/1621Windows消息系统的组成消息系统的组成消息队列消息循环窗口过程3.2消息系统2021/6/1622消息的数据结构消息的数据结构消息的数据结构MSG的定义如下:typedefstructtagMSGHWNDhwnd;/用以检索消息的窗口句柄UINTmessage;/消息值WPARAMwParam;/包含有关消息的附加信息LPARAMlParam;/随不同的消息而有所不同DWORDtime;/消息送到队列的时间POINTpt;/消息发送

11、时,屏幕光标的位置MSG;3.2消息系统2021/6/1623 Windows常用消息常用消息WM_LBUTTONDOWN:单击鼠标左键时产生的消息;WM_LBUTTONUP:放开鼠标左键时产生的消息;WM_RBUTTONDOWN:单击鼠标右键时产生的消息;WM_RBUTTONUP:放开鼠标右键时产生的消息;WM_LBUTTONDBLCLK:双击鼠标左键时产生的消息;WM_RBUTTONDBLCLK:双击鼠标右键时产生的消息;WM_CREATE:CreateWindows()函数产生的消息;WM_CLOSE:关闭窗口时产生的消息;WM_QUIT:退出应用程序时由PostQuitMessage(

12、)发出的消息;WM_PAINT:Windows系统需要重绘时产生的消息。3.2消息系统2021/6/16243.2消息系统消息队列消息队列l消息队列是系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程l在16位的系统中系统中只有一个消息队列l32位的系统中每一运行的程序都会有一个消息队列2021/6/1625支持队列特征的消息驱动模型 3.2消息系统消息队列消息队列2021/6/16263.2消息系统什么是消息循环什么是消息循环while(GetMessage(&Msg,NULL,0,0)0)TranslateMessage(&Msg);DispatchMessage(&Msg);

13、2021/6/16273.2消息系统Windows消息处理示意图消息处理示意图Windows系统应用程序队列A应用程序队列B系统队列事件输入WinMain函数消息循环窗口函数1窗口函数2WinMain函数消息循环窗口函数1窗口函数2应用程序A应用程序B消息循环消息循环2021/6/1628WinMainWinMain()()()() 初始化;初始化;初始化;初始化; while(GetMessage(&msg) while(GetMessage(&msg) TranslateMessage( ); TranslateMessage( ); DispatchMessage( ); Dispatc

14、hMessage( ); 系统系统系统系统消息消息消息消息队列队列队列队列WndProc(msg)WndProc(msg) switch(msg)switch(msg)case MSG1:case MSG1:case MSG2:case MSG2: 应用应用应用应用程序程序程序程序消息消息消息消息队列队列队列队列mousemousedriverdriverkeyboardkeyboarddriverdriverSendMessage()SendMessage()USERUSERModuleModulemessage frommessage fromOther windowOther windo

15、wPostMessage()PostMessage()system3.3一个具体的窗口程序2021/6/16294.Win32程序的基本结构l4.1.Windows程序组成l4.2.详解入口,窗口,消息l4.3.Windows数据类型l4.4.Windows程序的“生生死死”2021/6/1630lWinMain()程序入口点l注册窗口RegisterClass()l生成并显示窗口CreateWindow()ShowWindow()l消息循环lWndProc()窗口函数(功能实现)l区分消息switchl根据消息触发相应处理l调用DefWindowProc()不处理的消息、和需要系统进一步处理

16、的消息如WM_CLOSE,使用者关闭了窗口。应用程序获得这个消息后,释放了自己的资源,然后让系统进一步执行关闭窗口的动作4.1.Windows程序组成2021/6/1631WinMainWinMain()()()() 初始化;初始化;初始化;初始化; 创建、显示、更新窗口;创建、显示、更新窗口;创建、显示、更新窗口;创建、显示、更新窗口; 建立基于消息的建立基于消息的建立基于消息的建立基于消息的 事件驱动机制事件驱动机制事件驱动机制事件驱动机制 WinMainWinMain()()()() RegisterClass( );RegisterClass( ); CreateWindow( );C

17、reateWindow( ); ShowWindow( ); ShowWindow( ); UpdateWindow( ); UpdateWindow( ); while(GetMessage(&msg) while(GetMessage(&msg) TranslateMessage( ); TranslateMessage( ); DispatchMessage( ); DispatchMessage( ); WinMainWinMain()程序入口点()程序入口点()程序入口点()程序入口点4.2.详解入口2021/6/16324.2.详解入口WinMain函数的原型如下:int WINA

18、PI WinMain (HINSTANCE hInstance, / 当前实例句柄当前实例句柄HINSTANCE hPrevInstance, / 以前的实例句以前的实例句柄柄LPSTR lpCmdLine, / 指向命令行参数的指针指向命令行参数的指针int nCmdShow ) / 窗口的显示状态窗口的显示状态2021/6/1633初始化包括初始化包括l定义窗口l注册窗口l创建窗口l显示窗口需要注意的是,在显示窗口ShowWindow函数后,需调用UpdateWindow()函数更新并绘制用户区,并发出WM_PAINT消息。4.2.详解窗口2021/6/1634l注册窗口RegisterC

19、lass()在注册之前可以设置窗口属性,系统会给出一些缺省值,我们重点关心其中的lpfnWndProc参数WNDCLASS wc;WNDCLASS wc;wc.stvle = ;wc.stvle = ;wc.lpfnWndProc wc.lpfnWndProc (WNDPROCWNDPROC)WndProc;WndProc;提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息wc.hIcon = wc.hIcon = wc.Cursor = wc.Cursor = wc.hbrBackground =

20、wc.hbrBackground = RegisterClass(&wc);RegisterClass(&wc);4.2.详解窗口2021/6/1635lCreateWindow()lShowWindow()lUpdateWindow()4.2.详解窗口 HWND CreateWindow( LPCTSTR lpClassName, /已注册的窗口类名 LPCTSTR lpWindowName, /窗口标题 DWORD dwStyle, /窗口风格 int x, /窗口的水平位置 int y, /窗口的垂直位置 int nWidth, /窗口宽度 int nHeight, /窗口高度 HWND

21、 hWndParent, /父窗口句柄 HMENU hMenu, /菜单句柄或控件标识 HINSTANCE hInstance, /应用程序实例句柄 LPVOID lpParam ) /其他窗口创建时的参数数据2021/6/1636l消息l本身是一个无符号整型变量l类型有lWM_COMMAND:系统命令类,菜单选择,按钮等lWM_PAINT:对窗口作图lWM_DESTORY:关闭窗口lWM_USER:用户可自定义一些消息l在某个特定类型之下,更有许多事件,一般通过wParam通知4.2.详解消息2021/6/1637while(GetMessage(&msg)TranslateMessage(

22、&msg);/消息转换DispatchMessage(&msg);lGetMessage具有阻塞机制l当消息队列中没有消息时,程序非忙等,而是让权等待l当收到WM_QUIT时,GetMessage返回false,循环停止,同时应用程序终止。lDispatchMessagel通过USER模块协助,将消息传递到WndProclWndProc的调用指示在注册窗口类时,已向系统指明4.2.详解消息采集2021/6/1638WndProc( HWND hWnd, UINT message,WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lP

23、aram) WPARAM wParam, LPARAM lParam)HWND hWnd: HWND hWnd: 窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用UINT messageUINT message:消息(类型):消息(类型):消息(类型):消息(类型)WPARAM wParamWPARAM wParam:传递的参数:传递的参数:传递的参数:传递的参数LPARAM lParamLPARAM lParam: 传递的参数传递的参数传递的参数传递的参数1-1-在基于消息的机制中,有时仅有消息是不够的在

24、基于消息的机制中,有时仅有消息是不够的在基于消息的机制中,有时仅有消息是不够的在基于消息的机制中,有时仅有消息是不够的2-2-产生消息的同时,传递什么样的参数要视具体产生消息的同时,传递什么样的参数要视具体产生消息的同时,传递什么样的参数要视具体产生消息的同时,传递什么样的参数要视具体的消息而定的消息而定的消息而定的消息而定4.2.详解消息处理l消息处理函数是用于处理特定消息的一些代码,一般包括一个多分支switch语句结构。2021/6/1639WndProc( hWnd, message, wParam, lParam)WndProc( hWnd, message, wParam, lPa

25、ram) switch(message)switch(message)case WM_COMMANDcase WM_COMMAND:id = LOWORD(wParam)id = LOWORD(wParam);Switch(id) Switch(id) case IDM_OPENcase IDM_OPEN:breakbreak;菜单中的菜单中的菜单中的菜单中的openopen选项选项选项选项 case WM_PAINT:case WM_PAINT:在视窗作图;在视窗作图;在视窗作图;在视窗作图;breakbreak;defaultdefault:DefWindowProc();DefWindo

26、wProc();4.2.详解消息处理2021/6/1640消息的处理消息的处理消息的处理消息的处理4.2.详解消息处理思考:怎样根据功能要求思考:怎样根据功能要求思考:怎样根据功能要求思考:怎样根据功能要求生成消息,并把这个消息生成消息,并把这个消息生成消息,并把这个消息生成消息,并把这个消息传递给窗口函数?传递给窗口函数?传递给窗口函数?传递给窗口函数?窗口程序的可能结构WindowsWindows系统系统系统系统显示显示显示显示产生消息产生消息在窗口中显示在窗口中显示2021/6/16414.3.Windows数据类型Windows数据类型数据类型对应的基本数据对应的基本数据类型类型(C语

27、言语言)说明说明BOOLbool布尔值BSTRunsignedshort*32位字符指针BYTEunsignedchar8位无符号整数COLORREFunsignedlong用作颜色值的32位值DWORDunsignedlong32位无符号整数,段地址和相关的偏移地址LONGlong32位带符号整数LPARAMlong作为参数传递给窗口过程或回调函数的32位值LPCSTRconstchar*指向字符串常量的32位指针LPSTRchar*指向字符串的32位指针LPVOIDvoid*指向未定义类型的32位指针LRESULTlong来自窗口过程或回调函数的32位返回值UINTunsignedint3

28、2位无符号整数WORDunsignedshort16位无符号整数WPARAMunsignedint当作参数传递给窗口过程或回调函数的32位值2021/6/1642lWindows将使用的所有类型定义在Windows.h文件和其相关的文件中。l一些常用的类型有句柄(HANDLE)、窗口句柄(HWND)、字符(BYTE)、短整数(WORD)、布尔型(BOOL)、字符串指针(LPSTR)以及常量字符串指针(LPCSTR)等。lHANDLE是一个用作句柄的32位整数,句柄是代表某些资源的简单的数值,所有的句柄类型以H开头。l凡是数据类型的前缀是前缀是P或或LP,则表示该类型是一个指针或长指针数据类型指

29、针或长指针数据类型。若前缀是前缀是U,则表示无符号数,则表示无符号数据类型据类型,等等。4.3.Windows数据类型2021/6/1643l程序初始化过程中调用CreateWindow,为程序创建了一个窗口,CreateWindow送出WM_CREATE直接给窗口函数,后者可以在此时做些初初始化始化操作;l在程序运行过程中,不断以GetMessage从消息队列中取得消息。如果这个如果这个消息是消息是WM_QUIT,GetMessage会得到会得到false的返回值而结束循环,进而结的返回值而结束循环,进而结束整个程序;束整个程序;lDispatchMessage通过系统USER模块的协助与监

30、督,把消息分派至窗口函数,消息将被处理;l程序不断循环;l当使用者按下系统菜单中的Close命令时,系统送出WM_CLOSE,通常窗口程序不处理它,由DefWindowProc处理;lDefWindowProc处理WM_CLOSE,调用DestoryWindow把窗口清除,送出WM_DESTORY;l窗口程序对WM_DESTORY的处理是调用PostQuitMessage;lPostQuitMessage送出WM_QUIT,于是WinMain的循环结束了,整个应用程序也结束了。4.4.Windows程序的“生生死死”2021/6/1644CreateWindow()CreateWindow()

31、WM_CREATEWM_CREATEGetMessage()GetMessage()DispatchMessage(DispatchMessage(WM_CREATEWM_CREATE) )WndProc(WndProc(WM_CREATEWM_CREATE) )用户程序初始化用户程序初始化用户程序初始化用户程序初始化启动启动启动启动4.4.Windows程序的“生”WinMain()WinMain() 初始化;初始化;初始化;初始化; CreateWindow(); CreateWindow(); while(GetMessage(&msg) while(GetMessage(&msg) T

32、ranslateMessage( ); TranslateMessage( ); DispatchMessage( ); DispatchMessage( ); WndProc(msg)WndProc(msg) switch(msg)switch(msg)case WM_CREATE:case WM_CREATE:用户程序初始化用户程序初始化用户程序初始化用户程序初始化case WM_DESTORY:case WM_DESTORY:PostQuitMessage()PostQuitMessage()default:default:DefWindowProc()DefWindowProc() 2

33、021/6/1645使用者按下关闭按钮使用者按下关闭按钮使用者按下关闭按钮使用者按下关闭按钮WM_CLOSEWM_CLOSEGetMessage()GetMessage()DispatchMessage( WM_CLOSE)DispatchMessage( WM_CLOSE)WndProc(WM_CLOSE)WndProc(WM_CLOSE)DefWindowProc(WM_CLOSE)DefWindowProc(WM_CLOSE)关闭关闭关闭关闭WinMain()WinMain() 初始化;初始化;初始化;初始化; CreateWindow(); CreateWindow(); while(

34、GetMessage(&msg) while(GetMessage(&msg) TranslateMessage( ); TranslateMessage( ); DispatchMessage( ); DispatchMessage( ); WndProc(msg)WndProc(msg) switch(msg)switch(msg)case WM_CREATE:case WM_CREATE:用户程序初始化用户程序初始化用户程序初始化用户程序初始化case WM_DESTORY:case WM_DESTORY:PostQuitMessage()PostQuitMessage()default

35、:default:DefWindowProc()DefWindowProc() DestoryWindow( )DestoryWindow( )WM_DESTORYWM_DESTORYGetMessage()GetMessage()DispatchMessage( WM_DESTORY)DispatchMessage( WM_DESTORY)WndProc(WM_DESTORY)WndProc(WM_DESTORY)PostQuitMessage()PostQuitMessage()WM_QIUTWM_QIUTGetMessage()GetMessage()返回为返回为返回为返回为0,whil

36、e0,while结束结束结束结束WinMainWinMain结束,整个程序结束结束,整个程序结束结束,整个程序结束结束,整个程序结束4.4.Windows程序的“死”2021/6/1646下面介绍建立基于API的应用程序框架的步骤。l(1)在File下拉菜单中选择New选项,以建立项目文件。l(2)在弹出的New对话框中,选择Projects选项卡,并选择其中的Win32Application项,在ProjectName编辑框中填人所要创建的项目文件名Myapi,然后单击OK按钮。l(3)此时弹出如后图所示的界面,选择其中的Anemptyproject选项,说明是创建一个空的项目文件。5.实验

37、:利用API开发Win32程序实例2021/6/1647Win32 Application Step 1 of 1对话框5.利用API开发Win32程序实例2021/6/1648New Project Information对话框5.利用API开发Win32程序实例2021/6/1649空的Win32应用程序框架界面 5.利用API开发Win32程序实例2021/6/1650Insert Files into Project对话框 5.利用API开发Win32程序实例2021/6/1651Windows窗口程序的运行结果 5.利用API开发Win32程序实例2021/6/1652源程序代码如下

38、:#include/窗口函数说明LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);/初始化窗口类/WinMain函数说明intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)HWNDhwnd;MSGMsg;WNDCLASSwndclass;charlpszClassName=“窗口”;/窗口类名charlpszTitle=My_Windows;/窗口标题名5.利用API开发Win32程序实例2021/6/1653wndclass.sty

39、le=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/窗口处理函数为WndProcwndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);/窗口采用箭头光标wndclass.hbrBackground=(HBRUSH)GetS

40、tockObject(WHITE_BRUSH);/ 窗口背景为白色wndclass.lpszMenuName=NULL; /窗口中无菜单wndclass.lpszClassName=lpszClassName;/窗口类名为“窗口示例”/窗口类注册if(!RegisterClass(&wndclass)/如果注册失败,则发出警告声音MessageBeep(0);returnFALSE;5.利用API开发Win32程序实例2021/6/1654/创建窗口hwnd=CreateWindow(lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWIND

41、OW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL);/不使用该值/显示窗口ShowWindow(hwnd,nCmdShow);5.利用API开发Win32程序实例2021/6/1655/绘制用户区UpdateWindow(hwnd);/消息循环while(GetMessage(&Msg,NULL,0,0)TranslateMessage(&Msg);/将消息

42、的虚拟键转换为字符信息DispatchMessage(&Msg);/将消息传送到指定窗口returnMsg.wParam;/消息循环结束即程序终止时将信息返回系统5.利用API开发Win32程序实例2021/6/1656/窗口函数LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAM wParam,LPARAMlParam)switch(message)caseWM_DESTROY:PostQuitMessage(0);/调用PostQuitMessage发出WM_QUIT消息default:/默认时采用系统消息默认处理函数returnDefWindowProc(hwnd,message,wParam,lParam);return(0);5.利用API开发Win32程序实例2021/6/1657谢谢!谢谢!2021/6/1658 结束语结束语若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号