Win32 API用程序框架结构简.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Win32 API用程序框架结构简

Win32 API应用程序框架结构(2) ? 1.3.3? 与传统的C程序一样,在程序的开始都会包含头文件,并在程序中会有对调用函数的申明。在每一个用C编写的Windows程序中,都会用到一个头文件WINDOWS.H。其实,WINDOWS.H只是一个包含文件,包含了其他的Windows头文件。当然,在这些被包含的头文件中也可能还包含着其他的Windows头文件。这些头文件中最重要的有如下几种。 ●??? WINDEF.H:基本类型的定义。 ●??? WINNT.H:支持Unicode的类型定义。 ●??? WINGDI.H:图形设备接口的定义。 ●??? WINUSER.H:用户接口的定义。 ●??? WINBASE.H:内核函数的定义。 ●??? WINSOCK.H和WINSOCK2.H:用于网络通信的套接字的定义。 在这些头文件中,定义了Windows提供的所有数据类型、常数标识符、函数原型和数据结构等,都是Windows文档中最重要的部分。在Visual C++的Include子目录中可以找到所有的头文件。 1.3.4? 函数和数据结构 在C语言中有一个入口函数main,在Windows应用程序中同样也有一个入口函数WinMain,它的原型在WINBASE.H中声明,如下所示: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nShowCmd); 其中,第一个参数被称为“实例句柄”,该句柄惟一地标识了该程序,其他Windows函数可以通过将该句柄作为参数来调用该程序;第二个参数只是为了与早期的版本相兼容,在32位Windows程序中,该概念已经不再被采用,所以总是设置为NULL;第三个参数用于运行程序的命令行,可以通过它将文件在程序启动时载入内存;第四个参数表示程序在运行时是以何种方式显示的(从正常、最大化和最小化中选一)。 在程序Hello中,除了用到WinMain函数外,还用到了以下的API函数。 ●??? LoadIcon:为程序加载图标以供使用。 ●??? LoadCursor:为程序加载鼠标指针以供使用。 ●??? GetStockObject:获取图形对象。 ●??? RegisterClass:为主程序的窗口注册窗口类。 ●??? ShowWindow:在屏幕上显示窗口。 ●??? UpdateWindow:命令窗口刷新自身。 ●??? GetMessage:从消息队列中获取消息。 ●??? TranslateMessage:转换某些键盘消息。 ●??? DispatchMessage:将消息发送给窗口过程。 ●??? BeginPaint:开始在窗口的客户区绘制。 ●??? GetClientWindow:获得窗口客户区的尺寸。 ●??? SetTextColor:设置文本的颜色。 ●??? DrawText:显示文本串。 ●??? EndPaint:结束绘制。 ●??? InvalidateRect:强制刷新指定的区域,程序Hello刷新整个窗口的客户区。 ●??? PostQuitMessage:在消息队列中插入一条“退出”消息。 ●??? DefWindowProc:执行默认的消息处理。 这些函数在头文件WINDOWS.H中都有原型的申明,具体的信息可以查阅MSDN(Microsoft Developer Network)中SDK平台的部分函数说明。除了用到的这些API函数外,还使用了在Windows头文件中定义的4个数据类型:MSG(消息结构)、WNDCLASS(窗口类结构)、PAINTSTRUCT(绘图结构)和RECT(矩形结构)。 1. 消息结构 消息结构定义一个用于发送的消息,其中包含消息的具体信息,在程序接收到消息后,根据其中包含的信息做出相应的处理。其结构声明如下: typedef struct tagMSG { ??? HWND hwnd;????????? // 获得消息的窗口句柄 ??? UINT message;?????? // 消息标志 ??? WPARAM wParam;????? // 消息的附加信息 ??? LPARAM lParam;????? // 消息的附加信息 ??? DWORD time;???????? // 消息的发送时间 ??? POINT pt;?????????? // 当消息发送时,鼠标所处的屏幕位置 } MSG, *PMSG; 2. 窗口类结构 窗口总是在窗口类的基础上创建的,窗口类用来标识处理窗口消息的窗口过程。在一个窗口类的基础上可以创建多个窗口的实例,所以在程序创建窗口之前,必须先调用函数RegisterClass

文档评论(0)

whemm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档