GetWindowRect Function

The GetWindowRect function 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.

Syntax

BOOL GetWindowRect(      
    HWND hWnd,     LPRECT lpRect );

Parameters

hWnd
[in] Handle to the window.
lpRect
[out] Pointer to a structure that receives the screen coordinates of the upper-left and lower-right corners of the window.

Return Value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

In conformance with conventions for the RECT structure, the bottom-right coordinates of the returned rectangle are exclusive. In other words, the pixel at (right, bottom) lies immediately outside the rectangle.

Example

For an example, see Initializing a Dialog Box.

Function Information

Minimum DLL Versionuser32.dll
HeaderDeclared in Winuser.h, include Windows.h
Import libraryUser32.lib
Minimum operating systems Windows 95, Windows NT 3.1
UnicodeImplemented as Unicode version.

See Also

Tags :


Community Content

Noelle Mallory - MSFT
Possible VB9 declaration
Friend Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpRect As RECT) As Boolean
Usage:
Dim RECT As API.RECT
If API.GetWindowRect(hWnd, RECT) Then
'Do something on success
Else
'Error you can Throw New Win32Exception()
End If

Renaud Bompuis
VB6 Declaration and usage example
VB6 declaration:
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, rectangle As RECT) As Boolean
MS Access usage example:
How to Determine the Current Screen Resolution: http://support.microsoft.com/?kbid=210106
Tags :

XenonOfArcticus
Doesn't return exactly what you'd expect on Vista with Aero Glass
Per this MSDN thread:
http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/6c1c67a9-5548-4e9b-989f-c7dbac0b1375/

Apps under Vista that are not linked with WINVER=6 will receive a misleading set of values here, that do not account for the extra padding of "glass" pixels Vista Aero applies to the window. This appears to happen even in Aero Basic (without Glass) to retain sizing consistency. The workaround (if you don't want to set WINVER=6) seems to be to dynamically bind to dwmapi.dll and use GetProcAddress() to obtain the DwmGetWindowAttribute() function, and call it with the DWMWA_EXTENDED_FRAME_BOUNDS argument to request the genuine window frame dimensions.

This article:
http://shellrevealed.com/blogs/shellblog/archive/2006/10/12/Frequently-asked-questions-about-the-Aero-Basic-window-frame.aspx
explains the anatomy of the window frame dimensions under Vista (though it only diagrams the Aero Basic anatomy, not the full Aero Glass layout).
Tags :

Thomas Lee
C#

[DllImport("user32.dll")]

private static extern bool GetWindowRect(IntPtr hWnd, ref Rectangle rect);

Tags : c#

Page view tracker