Windows (Windows and Messages)
In a graphical Windows-based application, a window is a rectangular area of the screen where the application displays output and receives input from the user. Therefore, one of the first tasks of a graphical Windows-based application is to create a window.
A window shares the screen with other windows, including those from other applications. Only one window at a time can receive input from the user. The user can use the mouse, keyboard, or other input device to interact with this window and the application that owns it.
In This Section
Name | Description |
---|---|
About Windows | Describes the programming elements that applications use to create and use windows; manage relationships between windows; and size, move, and display windows. |
Using Windows | Contains examples that perform tasks associated with using windows. |
Window Features | Discusses features of windows such as window types, states, size, and position. |
Window Reference | Contains the API reference. |
Window Functions
Name | Description |
---|---|
AdjustWindowRect | Calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size. |
AdjustWindowRectEx | Calculates the required size of the window rectangle, based on the desired size of the client rectangle. The window rectangle can then be passed to the CreateWindowEx function to create a window whose client area is the desired size. |
AllowSetForegroundWindow | Enables the specified process to set the foreground window using the SetForegroundWindow function. The calling process must already be able to set the foreground window. For more information, see Remarks later in this topic. |
AnimateWindow | Enables you to produce special effects when showing or hiding windows. There are four types of animation: roll, slide, collapse or expand, and alpha-blended fade. |
AnyPopup | Indicates whether an owned, visible, top-level pop-up, or overlapped window exists on the screen. The function searches the entire screen, not just the calling application's client area. |
ArrangeIconicWindows | Arranges all the minimized (iconic) child windows of the specified parent window. |
BeginDeferWindowPos | Allocates memory for a multiple-window- position structure and returns the handle to the structure. |
BringWindowToTop | Brings the specified window to the top of the Z order. If the window is a top-level window, it is activated. If the window is a child window, the top-level parent window associated with the child window is activated. |
CalculatePopupWindowPosition | Calculates an appropriate pop-up window position using the specified anchor point, pop-up window size, flags, and the optional exclude rectangle. When the specified pop-up window size is smaller than the desktop window size, use the CalculatePopupWindowPosition function to ensure that the pop-up window is fully visible on the desktop window, regardless of the specified anchor point. |
CascadeWindows | Cascades the specified child windows of the specified parent window. |
ChangeWindowMessageFilter | Adds or removes a message from the User Interface Privilege Isolation (UIPI) message filter. |
ChangeWindowMessageFilterEx | Modifies the UIPI message filter for a specified window. |
ChildWindowFromPoint | Determines which, if any, of the child windows belonging to a parent window contains the specified point. The search is restricted to immediate child windows. Grandchildren, and deeper descendant windows are not searched. |
ChildWindowFromPointEx | Determines which, if any, of the child windows belonging to the specified parent window contains the specified point. The function can ignore invisible, disabled, and transparent child windows. The search is restricted to immediate child windows. Grandchildren and deeper descendants are not searched. |
CloseWindow | Minimizes (but does not destroy) the specified window. |
CreateWindow | Creates an overlapped, pop-up, or child window. It specifies the window class, window title, window style, and (optionally) the initial position and size of the window. The function also specifies the window's parent or owner, if any, and the window's menu. |
CreateWindowEx | Creates an overlapped, pop-up, or child window with an extended window style; otherwise, this function is identical to the CreateWindow function. For more information about creating a window and for full descriptions of the other parameters of CreateWindowEx, see CreateWindow. |
DeferWindowPos | Updates the specified multiple-window – position structure for the specified window. The function then returns a handle to the updated structure. The EndDeferWindowPos function uses the information in this structure to change the position and size of a number of windows simultaneously. The BeginDeferWindowPos function creates the structure. |
DeregisterShellHookWindow | Unregisters a specified Shell window that is registered to receive Shell hook messages. It unregisters windows that are registered with a call to the RegisterShellHookWindow function. |
DestroyWindow | Destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain). |
EndDeferWindowPos | Simultaneously updates the position and size of one or more windows in a single screen-refreshing cycle. |
EndTask | Forcibly closes a specified window. |
EnumChildProc | Application-defined callback function used with the EnumChildWindows function. It receives the child window handles. The WNDENUMPROC type defines a pointer to this callback function. EnumChildProc is a placeholder for the application-defined function name. |
EnumChildWindows | Enumerates the child windows that belong to the specified parent window by passing the handle to each child window, in turn, to an application-defined callback function. EnumChildWindows continues until the last child window is enumerated or the callback function returns FALSE. |
EnumThreadWindows | Enumerates all nonchild windows associated with a thread by passing the handle to each window, in turn, to an application-defined callback function. EnumThreadWindows continues until the last window is enumerated or the callback function returns FALSE. To enumerate child windows of a particular window, use the EnumChildWindows function. |
EnumThreadWndProc | An application-defined callback function used with the EnumThreadWindows function. It receives the window handles associated with a thread. The WNDENUMPROC type defines a pointer to this callback function. EnumThreadWndProc is a placeholder for the application-defined function name. |
EnumWindows | Enumerates all top-level windows on the screen by passing the handle to each window, in turn, to an application-defined callback function. EnumWindows continues until the last top-level window is enumerated or the callback function returns FALSE. |
EnumWindowsProc | An application-defined callback function used with the EnumWindows or EnumDesktopWindows function. It receives top-level window handles. The WNDENUMPROC type defines a pointer to this callback function. EnumWindowsProc is a placeholder for the application-defined function name. |
FindWindow | Retrieves a handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows. This function does not perform a case-sensitive search. |
FindWindowEx | Retrieves a handle to a window whose class name and window name match the specified strings. The function searches child windows, beginning with the one following the specified child window. This function does not perform a case-sensitive search. |
GetAltTabInfo | Retrieves status information for the specified window if it is the application-switching (ALT+TAB) window. |
GetAncestor | Retrieves the handle to the ancestor of the specified window. |
GetClientRect | Retrieves the coordinates of a window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. Because client coordinates are relative to the upper-left corner of a window's client area, the coordinates of the upper-left corner are (0,0). |
GetDesktopWindow | Returns a handle to the desktop window. The desktop window covers the entire screen. The desktop window is the area on top of which other windows are painted. |
GetForegroundWindow | Returns a handle to the foreground window (the window with which the user is currently working). The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads. |
GetGUIThreadInfo | Retrieves information about the active window or a specified GUI thread. |
GetLastActivePopup | Determines which pop-up window owned by the specified window was most recently active. |
GetLayeredWindowAttributes | Retrieves the opacity and transparency color key of a layered window. |
GetNextWindow | Retrieves a handle to the next or previous window in the Z-Order. The next window is below the specified window; the previous window is above. If the specified window is a topmost window, the function retrieves a handle to the next (or previous) topmost window. If the specified window is a top-level window, the function retrieves a handle to the next (or previous) top-level window. If the specified window is a child window, the function searches for a handle to the next (or previous) child window. |
GetParent | Retrieves a handle to the specified window's parent or owner. |
GetProcessDefaultLayout | Retrieves the default layout that is used when windows are created with no parent or owner. |
GetShellWindow | Returns a handle to the Shell's desktop window. |
GetTitleBarInfo | Retrieves information about the specified title bar. |
GetTopWindow | Examines the Z order of the child windows associated with the specified parent window and retrieves a handle to the child window at the top of the Z order. |
GetWindow | Retrieves a handle to a window that has the specified relationship (Z-Order or owner) to the specified window. |
GetWindowDisplayAffinity | Retrieves the current display affinity setting, from any process, for a given window. |
GetWindowInfo | Retrieves information about the specified window. |
GetWindowModuleFileName | Retrieves the full path and file name of the module associated with the specified window handle. |
GetWindowPlacement | Retrieves the show state and the restored, minimized, and maximized positions of the specified window. |
GetWindowRect | Retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen. |
GetWindowText | Copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application. |
GetWindowTextLength | Retrieves the length, in characters, of the specified window's title bar text (if the window has a title bar). If the specified window is a control, the function retrieves the length of the text within the control. However, GetWindowTextLength cannot retrieve the length of the text of an edit control in another application. |
GetWindowThreadProcessId | Retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window. |
IsChild | Determines whether a window is a child window or descendant window of a specified parent window. A child window is the direct descendant of a specified parent window if that parent window is in the chain of parent windows; the chain of parent windows leads from the original overlapped or pop-up window to the child window. |
IsGUIThread | Determines whether the calling thread is already a GUI thread. It can also optionally convert the thread to a GUI thread. |
IsHungAppWindow | Determines whether Windows considers that a specified application is not responding. An application is considered to be not responding if it is not waiting for input, is not in startup processing, and has not called PeekMessage within the internal timeout period of 5 seconds. |
IsIconic | Determines whether the specified window is minimized (iconic). |
IsProcessDPIAware | Gets a value that indicates if the current process is dots per inch (dpi) aware such that it adjusts the sizes of UI elements to compensate for the dpi setting. |
IsWindow | Determines whether the specified window handle identifies an existing window. |
IsWindowUnicode | Determines whether the specified window is a native Unicode window. |
IsWindowVisible | Retrieves the visibility state of the specified window. |
IsZoomed | Determines whether a window is maximized. |
LockSetForegroundWindow | The foreground process can call the LockSetForegroundWindow function to disable calls to the SetForegroundWindow function. |
LogicalToPhysicalPoint | Converts the logical coordinates of a point in a window to physical coordinates. |
MoveWindow | Changes the position and dimensions of the specified window. For a top-level window, the position and dimensions are relative to the upper-left corner of the screen. For a child window, they are relative to the upper-left corner of the parent window's client area. |
OpenIcon | Restores a minimized (iconic) window to its previous size and position; it then activates the window. |
PhysicalToLogicalPoint | Converts the physical coordinates of a point in a window to logical coordinates. |
RealChildWindowFromPoint | Retrieves a handle to the child window at the specified point. The search is restricted to immediate child windows; grandchildren and deeper descendant windows are not searched. |
RealGetWindowClass | Retrieves a string that specifies the window type. |
RegisterShellHookWindow | Registers a specified Shell window to receive certain messages for events or notifications that are useful to Shell applications. The event messages received are only those sent to the Shell window associated with the specified window's desktop. Many of the messages are the same as those that can be received after calling the SetWindowsHookEx function and specifying WH_SHELL for the hook type. The difference with RegisterShellHookWindow is that the messages are received through the specified window's WindowProc and not through a call back procedure. |
SetForegroundWindow | Puts the thread that created the specified window into the foreground and activates the window. Keyboard input is directed to the window, and various visual cues are changed for the user. The system assigns a slightly higher priority to the thread that created the foreground window than it does to other threads. |
SetLayeredWindowAttributes | Sets the opacity and transparency color key of a layered window. |
SetParent | Changes the parent window of the specified child window. |
SetProcessDefaultLayout | Changes the default layout when windows are created with no parent or owner only for the currently running process. |
SetProcessDPIAware | Sets the current process as dpi aware. |
SetWindowDisplayAffinity | Stores the display affinity setting in kernel mode on the hWnd associated with the window. |
SetWindowPlacement | Sets the show state and the restored, minimized, and maximized positions of the specified window. |
SetWindowPos | Changes the size, position, and Z order of a child, pop-up, or top-level window. These windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the Z order. |
SetWindowText | Changes the text of the specified window's title bar (if it has one). If the specified window is a control, the text of the control is changed. However, SetWindowText cannot change the text of a control in another application. |
ShowOwnedPopups | Shows or hides all pop-up windows owned by the specified window. |
ShowWindow | Sets the specified window's show state. |
ShowWindowAsync | Sets the show state of a window created by a different thread. |
SoundSentry | Triggers a visual signal to indicate that a sound is playing. |
SwitchToThisWindow | Switches focus to a specified window and bring it to the foreground. |
TileWindows | Tiles the specified child windows of the specified parent window. |
UpdateLayeredWindow | Updates the position, size, shape, content, and translucency of a layered window. |
UpdateLayeredWindowIndirect | Updates the position, size, shape, content, and translucency of a layered window. |
WindowFromPhysicalPoint | Retrieves a handle to the window that contains the specified physical point. |
WindowFromPoint | Retrieves a handle to the window that contains the specified point. |
WinMain | WinMain is the conventional name for the user-provided entry point for a Windows-based application. |
Window Macros
Name | Description |
---|---|
GET_X_LPARAM | Retrieves the signed x-coordinate from the given LPARAM value. |
GET_Y_LPARAM | Retrieves the signed y-coordinate from the given LPARAM value. |
HIBYTE | Retrieves the high-order byte from the given 16-bit value. |
HIWORD | Retrieves the high-order word from the given 32-bit value. |
LOBYTE | Retrieves the low-order byte from the specified value. |
LOWORD | Retrieves the low-order word from the specified value. |
MAKELONG | Creates a LONG value by concatenating the specified values. |
MAKELPARAM | Creates a value for use as an lParam parameter in a message. The macro concatenates the specified values. |
MAKELRESULT | Creates a value for use as a return value from a window procedure. The macro concatenates the specified values. |
MAKEWORD | Creates a WORD value by concatenating the specified values. |
MAKEWPARAM | Creates a value for use as a wParam parameter in a message. The macro concatenates the specified values. |
Window Messages
Name | Description |
---|---|
MN_GETHMENU | Gets the HMENU for the current window. |
WM_GETFONT | Retrieves the font with which the control is currently drawing its text. |
WM_GETTEXT | Copies the text that corresponds to a window into a buffer provided by the caller. |
WM_GETTEXTLENGTH | Determine the length, in characters, of the text associated with a window. |
WM_SETFONT | Specifies the font that a control is to use when drawing text. |
WM_SETICON | Associates a new large or small icon with a window. The system displays the large icon in the ALT+TAB dialog box, and the small icon in the window caption. |
WM_SETTEXT | Sets the text of a window. |
Window Notifications
Name | Description |
---|---|
WM_ACTIVATEAPP | Sent when a window belonging to a different application than the active window is about to be activated. The message is sent to the application whose window is being activated and to the application whose window is being deactivated. A window receives this message through its WindowProc function. |
WM_CANCELMODE | Sent to cancel certain modes, such as mouse capture. For example, the system sends this message to the active window when a dialog box or message box is displayed. Certain functions also send this message explicitly to the specified window regardless of whether it is the active window. For example, the EnableWindow function sends this message when disabling the specified window. |
WM_CHILDACTIVATE | Sent to a child window when the user clicks the window's title bar or when the window is activated, moved, or sized. |
WM_CLOSE | Sent as a signal that a window or an application should terminate. |
WM_COMPACTING | Sent to all top-level windows when the system detects more than 12.5 percent of system time over a 30- to 60-second interval is being spent compacting memory. This indicates that system memory is low. |
WM_CREATE | Sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible. |
WM_DESTROY | Sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen. This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist. |
WM_ENABLE | Sent when an application changes the enabled state of a window. It is sent to the window whose enabled state is changing. This message is sent before the EnableWindow function returns, but after the enabled state (WS_DISABLED style bit) of the window has changed. |
WM_ENTERSIZEMOVE | Sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns. The system sends the WM_ENTERSIZEMOVE message regardless of whether the dragging of full windows is enabled. |
WM_ERASEBKGND | Sent when the window background must be erased (for example, when a window is resized). The message is sent to prepare an invalidated portion of a window for painting. |
WM_EXITSIZEMOVE | Sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns. |
WM_GETICON | Sent to a window to retrieve a handle to the large or small icon associated with a window. The system displays the large icon in the ALT+TAB dialog, and the small icon in the window caption. |
WM_GETMINMAXINFO | Sent to a window when the size or position of the window is about to change. An application can use this message to override the window's default maximized size and position, or its default minimum or maximum tracking size. |
WM_INPUTLANGCHANGE | Sent to the topmost affected window after an application's input language has been changed. You should make any application-specific settings and pass the message to the DefWindowProc function, which passes the message to all first-level child windows. These child windows can pass the message to DefWindowProc to have it pass the message to their child windows, and so on. |
WM_INPUTLANGCHANGEREQUEST | Posted to the window with the focus when the user chooses a new input language, either with the hotkey (specified in the Keyboard control panel application) or from the indicator on the system taskbar. An application can accept the change by passing the message to the DefWindowProc function or reject the change (and prevent it from taking place) by returning immediately. |
WM_MOVE | Sent after a window has been moved. |
WM_MOVING | Sent to a window that the user is moving. By processing this message, an application can monitor the position of the drag rectangle and, if needed, change its position. |
WM_NCACTIVATE | Sent to a window when its nonclient area needs to be changed to indicate an active or inactive state. |
WM_NCCALCSIZE | Sent when the size and position of a window's client area must be calculated. By processing this message, an application can control the content of the window's client area when the size or position of the window changes. |
WM_NCCREATE | Sent prior to the WM_CREATE message when a window is first created. |
WM_NCDESTROY | Informs a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY message. WM_DESTROY is used to free the allocated memory object associated with the window. The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed. |
WM_NULL | Performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore. |
WM_PARENTNOTIFY | Sent to the parent of a child window when the child window is created or destroyed, or when the user clicks a mouse button while the cursor is over the child window. When the child window is being created, the system sends WM_PARENTNOTIFY just before the CreateWindow or CreateWindowEx function that creates the window returns. When the child window is being destroyed, the system sends the message before any processing to destroy the window takes place. |
WM_QUERYDRAGICON | Sent to a minimized (iconic) window. The window is about to be dragged by the user but does not have an icon defined for its class. An application can return a handle to an icon or cursor. The system displays this cursor or icon while the user drags the icon. |
WM_QUERYOPEN | Sent to an icon when the user requests that the window be restored to its previous size and position. |
WM_QUIT | Indicates a request to terminate an application, and is generated when the application calls the PostQuitMessage function. It causes the GetMessage function to return zero. |
WM_SHOWWINDOW | Sent to a window when the window is about to be hidden or shown. |
WM_SIZE | Sent to a window after its size has changed. |
WM_SIZING | Sent to a window that the user is resizing. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position. |
WM_STYLECHANGED | Ssent to a window after the SetWindowLong function has changed one or more of the window's styles. |
WM_STYLECHANGING | Sent to a window when the SetWindowLong function is about to change one or more of the window's styles. |
WM_THEMECHANGED | Broadcast to every window following a theme change event. Examples of theme change events are the activation of a theme, the deactivation of a theme, or a transition from one theme to another. |
WM_USERCHANGED | Sent to all windows after the user has logged on or off. When the user logs on or off, the system updates the user-specific settings. The system sends this message immediately after updating the settings. |
WM_WINDOWPOSCHANGED | Sent to a window whose size, position, or place in the Z order has changed as a result of a call to the SetWindowPos function or another window-management function. |
WM_WINDOWPOSCHANGING | Sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function. |
Window Structures
Name | Description |
---|---|
ALTTABINFO | Contains status information for the application-switching (ALT+TAB) window. |
CHANGEFILTERSTRUCT | Contains extended result information obtained by calling the ChangeWindowMessageFilterEx function. |
CLIENTCREATESTRUCT | Contains information about the menu and first multiple-document interface (MDI) child window of an MDI client window. An application passes a pointer to this structure as the lpParam parameter of the CreateWindow function when creating an MDI client window. |
CREATESTRUCT | Defines the initialization parameters passed to the window procedure of an application. These members are identical to the parameters of the CreateWindowEx function. |
GUITHREADINFO | Contains information about a GUI thread. |
MINMAXINFO | Contains information about a window's maximized size and position and its minimum and maximum tracking size. |
NCCALCSIZE_PARAMS | Contains information that an application can use while processing the WM_NCCALCSIZE message to calculate the size, position, and valid contents of the client area of a window. |
STYLESTRUCT | Contains the styles for a window. |
TITLEBARINFO | Contains title bar information. |
TITLEBARINFOEX | Expands on the information described in the TITLEBARINFO structure by including the coordinates of each element of the title bar. |
UPDATELAYEREDWINDOWINFO | Used by UpdateLayeredWindowIndirect to provide position, size, shape, content, and translucency information for a layered window. |
WINDOWINFO | Contains window information. |
WINDOWPLACEMENT | Contains information about the placement of a window on the screen. |
WINDOWPOS | Contains information about the size and position of a window. |
Window Constants
Name | Description |
---|---|
Extended Window Styles | Styles that can be specified wherever an extended window style is required. |
Window Styles | Styles that can be specified wherever a window style is required. After the control has been created, these styles cannot be modified, except as noted. |