在基于图形Windows的应用程序中,窗口是屏幕的矩形区域,应用程序显示输出并从用户接收输入。 因此,基于图形Windows的应用程序的第一项任务是创建窗口。

窗口与其他窗口共享屏幕,包括来自其他应用程序的窗口。 一次只能有一个窗口从用户接收输入。 用户可以使用鼠标、键盘或其他输入设备与此窗口和拥有它的应用程序进行交互。

AdjustWindowRectEx 根据客户端矩形的所需大小计算窗口矩形所需的大小。 然后,可以将窗口矩形传递给 CreateWindowEx 函数,以创建其工作区为所需大小的窗口。
AllowSetForegroundWindow 允许指定进程使用 SetForegroundWindow 函数设置前台窗口。 调用进程必须已能够设置前台窗口。 有关详细信息,请参阅本主题后面的备注。
AnimateWindow 使你可以在显示或隐藏窗口时产生特殊效果。 有四种类型的动画:滚动、幻灯片、折叠或展开和 alpha 混合淡化。
AnyPopup 指示屏幕上是否存在拥有、可见、顶级弹出窗口或重叠窗口。 该函数会搜索整个屏幕,而不仅仅是调用应用程序的工作区。
ArrangeIconicWindows 排列指定父窗口的所有最小化 (标志性) 子窗口。
BeginDeferWindowPos 为多窗口位置结构分配内存,并将句柄返回到结构。
BringWindowToTop 将指定的窗口置于 Z 顺序的顶部。 如果窗口是顶级窗口,则会激活它。 如果窗口是子窗口,则会激活与子窗口关联的顶级父窗口。
CalculatePopupWindowPosition 使用指定的定位点、弹出窗口大小、标志和可选的排除矩形计算相应的弹出窗口位置。 当指定的弹出窗口大小小于桌面窗口大小时,请使用 CalculatePopupWindowPosition 函数来确保无论指定的定位点如何,弹出窗口在桌面窗口中完全可见。
CascadeWindows 级联指定父窗口的指定子窗口。
ChangeWindowMessageFilter 从用户界面特权隔离 (UIPI) 消息筛选器添加或删除消息。
ChangeWindowMessageFilterEx 修改指定窗口的 UIPI 消息筛选器。
ChildWindowFromPoint 确定属于父窗口的子窗口包含指定点(如果有)。 搜索仅限于即时子窗口。 孙子和更深的后代窗口没有搜索。
ChildWindowFromPointEx 确定属于指定父窗口的子窗口包含指定点(如果有)。 该函数可以忽略不可见、禁用和透明的子窗口。 搜索仅限于即时子窗口。 孙子和更深的后代没有搜索。
CloseWindow 最小化 (但不销毁指定窗口) 。
CreateWindow 创建重叠、弹出窗口或子窗口。 它指定窗口类、窗口标题、窗口样式和 ((可选)) 窗口的初始位置和大小。 该函数还指定窗口的父级或所有者(如果有)和窗口菜单。
CreateWindowEx 创建具有扩展窗口样式的重叠、弹出窗口或子窗口;否则,此函数与 CreateWindow 函数相同。 有关创建窗口以及 CreateWindowEx 的其他参数的完整说明的详细信息,请参阅 CreateWindow
DeferWindowPos 更新指定的多窗口 - 指定窗口的位置结构。 然后,该函数将返回更新结构的句柄。 EndDeferWindowPos 函数使用此结构中的信息同时更改多个窗口的位置和大小。 BeginDeferWindowPos 函数创建结构。
DeregisterShellHookWindow 取消注册已注册以接收 Shell 挂钩消息的指定 Shell 窗口。 它取消注册通过对 RegisterShellHookWindow 函数的调用注册的窗口。
DestroyWindow 销毁指定的窗口。 该函数将 WM_DESTROY WM_NCDESTROY 消息发送到窗口以停用它,并从中删除键盘焦点。 该函数还会销毁窗口的菜单、刷新线程消息队列、销毁计时器、删除剪贴板所有权,如果窗口位于查看器链顶部) ,则中断剪贴板查看器链 (。
EndDeferWindowPos 同时在单个屏幕刷新周期中更新一个或多个窗口的位置和大小。
EndTask 强行关闭指定的窗口。
EnumChildProc EnumChildWindows 函数一起使用的应用程序定义的回调函数。 它接收子窗口句柄。 WNDENUMPROC 类型定义指向此回调函数的指针。 EnumChildProc 是应用程序定义的函数名称的占位符。
EnumChildWindows 通过将句柄传递给应用程序定义的回调函数,枚举属于指定父窗口的子窗口。 枚举ChildWindows 一直持续到枚举最后一个子窗口或回调函数返回 FALSE
EnumThreadWindows 通过将句柄传递给应用程序定义的回调函数,枚举与线程关联的所有非子窗口。 枚举ThreadWindows 将继续,直到枚举最后一个窗口或回调函数返回 FALSE 。 若要枚举特定窗口的子窗口,请使用 EnumChildWindows 函数。
EnumThreadWndProc EnumThreadWindows 函数一起使用的应用程序定义的回调函数。 它接收与线程关联的窗口句柄。 WNDENUMPROC 类型定义指向此回调函数的指针。 EnumThreadWndProc 是应用程序定义的函数名称的占位符。
EnumWindows 通过将句柄传递到应用程序定义的回调函数,枚举屏幕上的所有顶级窗口。 枚举枚举 到最后一个顶级窗口或回调函数返回 FALSE 为止。
EnumWindowsProc EnumWindows EnumDesktopWindows 函数一起使用的应用程序定义的回调函数。 它接收顶级窗口句柄。 WNDENUMPROC 类型定义指向此回调函数的指针。 EnumWindowsProc 是应用程序定义的函数名称的占位符。
FindWindow 检索顶级窗口的句柄,该窗口的类名称和窗口名称与指定的字符串匹配。 此函数不搜索子窗口。 此函数不执行区分大小写的搜索。
FindWindowEx 检索一个窗口的句柄,该窗口的类名和窗口名称与指定的字符串匹配。 该函数搜索子窗口,从指定子窗口后面的子窗口开始。 此函数不执行区分大小写的搜索。
GetAltTabInfo 如果指定窗口是应用程序切换 (ALT+TAB) 窗口,则检索指定窗口的状态信息。
GetAncestor 检索指定窗口的上级句柄。
GetClientRect 检索窗口工作区的坐标。 客户端坐标指定工作区的左上角和右下角。 由于客户端坐标相对于窗口工作区的左上角,因此左上角的坐标 (0,0) 。
GetDesktopWindow 返回桌面窗口的句柄。 桌面窗口覆盖整个屏幕。 桌面窗口是其他窗口绘制的区域。
GetForegroundWindow 返回前台窗口的句柄 (用户当前正在使用的窗口) 。 系统为创建前台窗口的线程分配略高于其他线程的优先级。
GetGUIThreadInfo 检索有关活动窗口或指定 GUI 线程的信息。
GetLastActivePopup 确定指定窗口拥有的弹出窗口最近处于活动状态。
GetLayeredWindowAttributes 检索分层窗口的不透明度和透明度颜色键。
GetNextWindow 检索 Z 顺序 中下一个或上一个窗口的句柄。 下一个窗口位于指定窗口下方;上一个窗口位于上面。 如果指定的窗口是最顶层的窗口,则函数将检索到下一个 (或上一个) 最顶层窗口的句柄。 如果指定的窗口是顶级窗口,该函数将检索下一个 (或上一个) 顶级窗口的句柄。 如果指定的窗口是子窗口,函数将搜索下一个 (或上一个) 子窗口的句柄。
GetParent 检索指定窗口的父级或所有者的句柄。
GetProcessDefaultLayout 检索在没有父级或所有者的情况下创建窗口时使用的默认布局。
GetShellWindow 返回 Shell 桌面窗口的句柄。
GetTitleBarInfo 检索有关指定标题栏的信息。
GetTopWindow 检查与指定父窗口关联的子窗口的 Z 顺序,并检索 Z 顺序顶部子窗口的句柄。
GetWindow 检索具有指定关系的窗口的句柄 ( Z-Order 或所有者) 指定窗口。
GetWindowDisplayAffinity 从给定窗口的任何进程检索当前显示相关性设置。
GetWindowInfo 检索有关指定窗口的信息。
GetWindowModuleFileName 检索与指定窗口句柄关联的模块的完整路径和文件名。
GetWindowPlacement 检索显示状态和已还原、最小化和最大化指定窗口的位置。
GetWindowRect 检索指定窗口的边界矩形的尺寸。 尺寸以相对于屏幕左上角的屏幕坐标提供。
GetWindowText 如果指定窗口的标题栏具有一个) ,则将其复制到缓冲区 (的文本。 如果指定的窗口是控件,则复制控件的文本。 但是, GetWindowText 无法检索其他应用程序中控件的文本。
GetWindowTextLength 如果窗口具有标题栏 () ,则检索指定窗口标题栏文本的长度(以字符为单位)。 如果指定的窗口是控件,函数将检索控件中文本的长度。 但是, GetWindowTextLength 无法检索其他应用程序中编辑控件的文本长度。
GetWindowThreadProcessId 检索创建指定窗口的线程的标识符,以及创建窗口的进程标识符(可选)。
IsChild 确定窗口是指定父窗口的子窗口还是子窗口。 如果父窗口位于父窗口链中,则子窗口是指定父窗口的直接后代;父窗口链从原始重叠窗口或弹出窗口到子窗口。
IsGUIThread 确定调用线程是否已是 GUI 线程。 它还可以选择性地将线程转换为 GUI 线程。
IsHungAppWindow 确定Windows是否认为指定的应用程序未响应。 如果应用程序未等待输入、不在启动处理中,并且未在 5 秒的内部超时期内调用 PeekMessage ,则被视为不响应。
IsIconic 确定指定的窗口是否最小化 (标志性的) 。
IsProcessDPIAware 获取一个值,该值指示当前进程是否是每英寸点 (dpi) 感知,以便调整 UI 元素的大小以补偿 dpi 设置。
IsWindow 确定指定的窗口句柄是否标识现有窗口。
IsWindowUnicode 确定指定的窗口是否为本机 Unicode 窗口。
IsWindowVisible 检索指定窗口的可见性状态。
IsZoomed 确定窗口是否最大化。
LockSetForegroundWindow 前台进程可以调用 LockSetForegroundWindow 函数以禁用对 SetForegroundWindow 函数的调用。
LogicalToPhysicalPoint 将窗口中某个点的逻辑坐标转换为物理坐标。
MoveWindow 更改指定窗口的位置和尺寸。 对于顶级窗口,位置和尺寸相对于屏幕左上角。 对于子窗口,它们相对于父窗口工作区的左上角。
OpenIcon 将最小化的 (标志性的) 窗口还原到其以前的大小和位置;然后激活窗口。
PhysicalToLogicalPoint 将窗口中某个点的物理坐标转换为逻辑坐标。
RealChildWindowFromPoint 检索指定点的子窗口的句柄。 搜索仅限于即时子窗口;孙子和更深的后代窗口没有搜索。
RealGetWindowClass 检索指定窗口类型的字符串。
RegisterShellHookWindow 注册指定的 Shell 窗口,以接收对 Shell 应用程序有用的事件或通知的某些消息。 收到的事件消息只是那些发送到与指定窗口桌面关联的 Shell 窗口的事件消息。 许多消息与调用 SetWindowsHookEx 函数后可以接收的消息相同,并为挂钩类型指定 WH_SHELL RegisterShellHookWindow 的区别在于,消息是通过指定窗口的 WindowProc 接收的,而不是通过回叫过程接收的。
SetForegroundWindow 将创建指定窗口的线程放入前台并激活窗口。 键盘输入定向到窗口,用户会更改各种视觉提示。 系统向创建前台窗口的线程分配略高于其他线程的优先级。
SetLayeredWindowAttributes 设置分层窗口的不透明度和透明度颜色键。
SetParent 更改指定子窗口的父窗口。
SetProcessDefaultLayout 仅在当前正在运行的进程没有父级或所有者的情况下创建窗口时更改默认布局。
SetProcessDPIAware 将当前进程设置为 dpi 感知。
SetWindowDisplayAffinity 将显示相关性设置存储在与窗口关联的 hWnd 上的内核模式下。
SetWindowPlacement 设置显示状态和还原、最小化和最大化指定窗口的位置。
SetWindowPos 更改子窗口、弹出窗口或顶级窗口的大小、位置和 Z 顺序。 这些窗口根据在屏幕上的外观进行排序。 最顶层的窗口接收最高排名,是 Z 顺序中的第一个窗口。
SetWindowText 如果指定窗口的标题栏具有一个) ,则更改其标题栏的文本 (。 如果指定的窗口是控件,控件的文本将更改。 但是, SetWindowText 无法更改另一个应用程序中控件的文本。
ShowOwnedPopups 显示或隐藏指定窗口拥有的所有弹出窗口。
ShowWindow 设置指定的窗口的显示状态。
ShowWindowAsync 设置由其他线程创建的窗口的显示状态。
SoundSentry 触发视觉信号以指示声音正在播放。
SwitchToThisWindow 将焦点切换到指定的窗口,并将其带到前台。
TileWindows 平铺指定父窗口的指定子窗口。
UpdateLayeredWindow 更新分层窗口的位置、大小、形状、内容和透明度。
UpdateLayeredWindowIndirect 更新分层窗口的位置、大小、形状、内容和透明度。
WindowFromPhysicalPoint 检索包含指定物理点的窗口的句柄。
WindowFromPoint 检索包含指定点的窗口的句柄。
WinMain WinMain 是基于Windows的应用程序的用户提供的入口点的传统名称。
WM_ACTIVATEAPP 当属于与活动窗口不同的应用程序的窗口即将激活时发送。 该消息将发送到正在激活其窗口的应用程序以及正在停用其窗口的应用程序。
窗口通过其 WindowProc 函数接收此消息。
WM_CANCELMODE 发送到取消某些模式,例如鼠标捕获。 例如,当显示对话框或消息框时,系统会将此消息发送到活动窗口。 某些函数还会显式将此消息发送到指定窗口,而不考虑它是活动窗口。 例如, EnableWindow 函数在禁用指定窗口时发送此消息。
WM_CHILDACTIVATE 当用户单击窗口的标题栏或窗口激活、移动或调整大小时,发送到子窗口。
WM_CLOSE 发送为窗口或应用程序应终止的信号。
WM_COMPACTING 当系统检测到 30 秒到 60 秒间隔内系统时间超过 12.5% 时,会发送到所有顶级窗口。 这表示系统内存较低。
WM_CREATE 当应用程序请求通过调用 CreateWindowEx CreateWindow 函数创建窗口时发送。 (函数返回之前发送消息。) 新窗口的窗口过程在创建窗口后接收此消息,但在窗口变为可见之前。
WM_DESTROY 当窗口被销毁时发送。 它将发送到从屏幕中删除窗口后正在销毁的窗口的窗口过程。
此消息首先发送到正在销毁的窗口,然后发送到子窗口 (,如果销毁任何) 。 在处理消息期间,可以假定所有子窗口仍然存在。
WM_ENABLE 当应用程序更改窗口的启用状态时发送。 它会发送到启用状态正在更改的窗口。 此消息在 EnableWindow 函数返回之前发送,但在启用状态 ( WS_DISABLED 样式位) 窗口已更改之后。
WM_ENTERSIZEMOVE 在窗口进入移动模式循环或调整大小循环后,将一次发送到窗口。 当用户单击窗口的标题栏或大小调整边框或窗口将 WM_SYSCOMMAND 消息传递到 DefWindowProc 函数和消息 的 wParam 参数指定 SC_MOVE SC_SIZE 值时,窗口将输入移动或调整模式循环。 当 DefWindowProc 返回时,该操作已完成。
无论是否启用完整窗口拖动,系统都会发送 WM_ENTERSIZEMOVE 消息。
WM_ERASEBKGND 当窗口背景必须在 (擦除时发送,例如,当窗口大小调整为) 时。 将发送消息以准备窗口的无效部分进行绘制。
WM_EXITSIZEMOVE 在退出移动模式循环或调整大小模式循环后,将一次发送到窗口。 当用户单击窗口的标题栏或大小调整边框或窗口将 WM_SYSCOMMAND 消息传递给 DefWindowProc 函数和消息 的 wParam 参数指定 SC_MOV E 或 SC_SIZE 值时,窗口将输入移动或调整模式循环。 当 DefWindowProc 返回时,该操作已完成。
WM_GETICON 发送到窗口以检索与窗口关联的大图标或小图标的句柄。 系统在 Alt+TAB 对话框中显示大图标,并在窗口标题中显示小图标。
WM_GETMINMAXINFO 当窗口的大小或位置即将更改时,发送到窗口。 应用程序可以使用此消息替代窗口的默认最大化大小和位置,或者默认的最小或最大跟踪大小。
WM_INPUTLANGCHANGE 更改应用程序输入语言后,发送到最受影响的窗口。 应进行任何特定于应用程序的设置并将消息传递给 DefWindowProc 函数,该函数会将消息传递给所有第一级子窗口。 这些子窗口可以将消息传递给 DefWindowProc ,使其将消息传递给其子窗口等。
WM_INPUTLANGCHANGEREQUEST 当用户选择新的输入语言(在键盘控制面板应用程序) 或系统任务栏上的指示器中指定的热键 ()时,发布到具有焦点的窗口。 应用程序可以通过将消息传递给 DefWindowProc 函数来接受更改,或者拒绝更改 (,并阻止它立即返回) 。
WM_MOVE 在移动窗口后发送。
WM_MOVING 发送到用户正在移动的窗口。 通过处理此消息,应用程序可以监视拖动矩形的位置,并根据需要更改其位置。
WM_NCACTIVATE 当需要更改其非client 区域以指示活动或非活动状态时,发送到窗口。
WM_NCCALCSIZE 必须计算窗口工作区的大小和位置时发送。 通过处理此消息,应用程序可以在窗口的大小或位置发生更改时控制窗口工作区的内容。
WM_NCCREATE 首次创建窗口时 ,在WM_CREATE 消息之前发送。
WM_NCDESTROY 通知窗口其非工作区正在被销毁。 DestroyWindow 函数将 WM_NCDESTROY 消息发送到 WM_DESTROY消息后面的 窗口。 WM_DESTROY 用于释放与窗口关联的已分配内存对象。
子窗口被销毁后,将发送 WM_NCDESTROY 消息。 相比之下, WM_DESTROY 在销毁子窗口之前发送。
WM_NULL 不执行任何操作。 如果应用程序想要帖子收件人窗口将忽略的邮件,应用程序会发送 WM_NULL 邮件。
WM_PARENTNOTIFY 创建或销毁子窗口时,或者当用户在光标位于子窗口上方时单击鼠标按钮时,发送到子窗口的父窗口。 创建子窗口时,系统会在创建窗口的 CreateWindow 或 CreateWindowEx 函数之前发送 WM_PARENTNOTIFY 。 当子窗口被销毁时,系统会在发生任何处理以销毁窗口之前发送消息。
WM_QUERYDRAGICON 发送到最小化的 (标志性) 窗口。 窗口将由用户拖动,但没有为其类定义的图标。 应用程序可以将句柄返回到图标或游标。 当用户拖动图标时,系统会显示此光标或图标。
WM_QUERYOPEN 当用户请求将窗口还原到其以前的大小和位置时发送到图标。
WM_QUIT 指示终止应用程序的请求,并在应用程序调用 PostQuitMessage 函数时生成。 它会导致 GetMessage 函数返回零。
WM_SHOWWINDOW 当窗口即将隐藏或显示时发送到窗口。
WM_SIZE 更改窗口大小后发送到窗口。
WM_SIZING 发送到用户正在调整大小的窗口。 通过处理此消息,应用程序可以监视拖动矩形的大小和位置,并根据需要更改其大小或位置。
WM_STYLECHANGED SetWindowLong 函数更改了窗口的一个或多个样式后,Ssent 到窗口。
WM_STYLECHANGING SetWindowLong 函数即将更改窗口的一个或多个样式时发送到窗口。
WM_THEMECHANGED 在主题更改事件之后广播到每个窗口。 主题更改事件的示例包括主题的激活、主题停用或从一个主题过渡到另一个主题。
WM_USERCHANGED 用户登录或关闭后发送到所有窗口。 当用户登录或关闭时,系统会更新用户特定的设置。 系统更新设置后立即发送此消息。
WM_WINDOWPOSCHANGED 发送到一个窗口,其大小、位置或位置在 Z 顺序中已更改,因为对 SetWindowPos 函数或其他窗口管理函数的调用。
WM_WINDOWPOSCHANGING 发送到一个窗口,其大小、位置或位置在 Z 顺序中将随着 对 SetWindowPos 函数或其他窗口管理函数的调用而更改。
CLIENTCREATESTRUCT 包含有关 MDI 客户端窗口的菜单和第一个多文档接口的信息, (MDI) 子窗口。 应用程序在创建 MDI 客户端窗口时将指向此结构的指针作为 CreateWindow 函数的 lpParam 参数传递。
CREATESTRUCT 定义传递给应用程序的窗口过程的初始化参数。 这些成员与 CreateWindowEx 函数的参数相同。
GUITHREADINFO 包含有关 GUI 线程的信息。
MINMAXINFO 包含有关窗口最大大小和位置以及其最小和最大跟踪大小的信息。
NCCALCSIZE_PARAMS 包含应用程序在处理 WM_NCCALCSIZE 消息时可以使用的信息,以计算窗口工作区的大小、位置和有效内容。
STYLESTRUCT 包含窗口的样式。
TITLEBARINFO 包含标题栏信息。
TITLEBARINFOEX 通过包括标题栏的每个元素的坐标,扩展 TITLEBARINFO 结构中介绍的信息。
UPDATELAYEREDWINDOWINFO UpdateLayeredWindowIndirect 用于为分层窗口提供位置、大小、形状、内容和半透明信息。
WINDOWINFO 包含窗口信息。
WINDOWPLACEMENT 包含有关在屏幕上放置窗口的信息。
WINDOWPOS 包含有关窗口的大小和位置的信息。