Windows编程:消息与消息队列详解

需积分: 15 10 下载量 9 浏览量 更新于2024-08-21 收藏 2.51MB PPT 举报
本文主要介绍了Windows编程中的消息和消息队列机制,以及Win32 API在其中的作用。文章提到了消息的两种类型:队列消息和非队列消息,同时详细阐述了各种消息处理函数的功能,如GetMessage、PostMessage和SendMessage。此外,还概述了Windows应用程序的类型,包括控制台程序、窗口程序和库程序,以及它们的入口函数、文件存在方式和执行方式。最后,文章提及了Windows开发环境,特别是Visual Studio C++作为开发工具,以及Windows库和头文件的基本信息。 在Windows编程中,消息是应用程序之间以及应用程序内部通信的重要方式。队列消息通过消息队列进行传递,先被放入队列,然后通过消息循环来获取并处理。非队列消息则直接调用接收窗口的处理函数进行处理。GetMessage用于从消息队列获取消息,PostMessage将消息投递到消息队列,而SendMessage则直接将消息发送给窗口处理函数并等待其处理结果。常见的队列消息包括WM_PAINT、键盘和鼠标事件、定时器等,非队列消息如WM_CREATE、WM_SIZE等。 Windows应用程序主要有三种类型:控制台程序、窗口程序和库程序。控制台程序基于DOS,窗口程序有自己的窗口并与用户交互,而库程序分为静态库(LIB)和动态库(DLL)。不同类型的程序具有不同的入口函数,如控制台程序的main、窗口程序的WinMain和动态库程序的DllMain。文件形式上,控制台和窗口程序生成EXE文件,动态库生成DLL文件,静态库生成LIB文件。执行方式上,控制台程序在DOS窗口运行,窗口程序在自己的窗口运行,而动态库由其他可执行程序或DLL调用。 Windows开发通常使用Visual Studio C++作为集成开发环境,其中包含编译器CL.EXE、链接器LINK.EXE和资源编译器RC.EXE。Windows库如kernel32.dll、user32.dll和gdi32.dll提供了一系列API,头文件如windows.h、windef.h、winbase.h、wingdi.h和winuser.h定义了Windows编程所需的数据类型和函数接口。 举例来说,一个简单的WinMain函数是Windows应用程序的入口点,它接受当前程序实例句柄(hInstance)、前一个实例句柄(hPrevInstance)等参数,是窗口程序的核心部分,负责初始化窗口和消息处理循环。