MSDN

HWND Type

The HWND type is a handle to a top-level window or a child window.

Definition

The HWND type is defined in the Windows API as follows:

typedef __HWND__ HWND;

Note: While the internal representation might vary slightly across different Windows versions and architectures (e.g., 32-bit vs. 64-bit), the concept of a handle remains consistent. It's an opaque pointer-like value that identifies a specific window object.

Usage

Handles are fundamental to window management in the Windows operating system. Every window, control, and dialog box that you create programmatically or that is part of the system has a unique handle associated with it. This handle is used by the operating system and your applications to interact with that specific window.

Key operations involving HWND include:

  • Creating windows: Functions like CreateWindowEx return an HWND for the newly created window.
  • Identifying windows: Functions like FindWindow or GetForegroundWindow return an HWND to identify a window.
  • Sending messages: Functions like SendMessage and PostMessage take an HWND as the first parameter to specify the target window.
  • Modifying window properties: Functions like SetWindowText, MoveWindow, and DestroyWindow use an HWND to refer to the window to be modified or destroyed.
  • Retrieving window information: Functions like GetWindowRect, IsWindowVisible, and GetClassName take an HWND to query a window's state.

Special Values

There are a few special HWND values:

  • NULL or 0: Represents an invalid or non-existent window handle.
  • HWND_BROADCAST: A special handle that directs the message to all top-level windows.
  • HWND_DESKTOP: A handle to the desktop window.
  • HWND_MESSAGE: A handle to the message-only window.

Related Concepts

  • Window Messages: The primary mechanism for inter-window communication.
  • Window Procedures (WndProc): The callback function that processes messages for a window.
  • Window Classes: A template that defines the properties and behavior of a type of window.

Important: You should never directly manipulate the value of an HWND. Always use the provided Windows API functions to interact with windows using their handles. Treat an HWND as an opaque identifier.

See Also