GetWindowRect function
Applies to: desktop apps only
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 WINAPI GetWindowRect( __in HWND hWnd, __out LPRECT lpRect );
Parameters
- hWnd [in]
-
Type: HWND
A handle to the window.
- lpRect [out]
-
Type: LPRECT
A pointer to a RECT structure that receives the screen coordinates of the upper-left and lower-right corners of the window.
Return value
Type:
Type: BOOL
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.
Examples
For an example, see Initializing a Dialog Box.
Requirements
|
Minimum supported client | Windows 2000 Professional |
|---|---|
|
Minimum supported server | Windows 2000 Server |
|
Header |
|
|
Library |
|
|
DLL |
|
See also
- Reference
- GetClientRect
- ScreenToClient
- SetWindowPos
- Conceptual
- Windows
Send comments about this topic to Microsoft
Build date: 2/3/2012
ScreenToClient does work fine on both though, if you're just needing to coordinate mouse relative to window position.
- 4/18/2012
- rogerdpack
private static extern bool GetWindowRect(IntPtr hWnd, ref Rectangle rect);
In this, do NOT use System.Drawing.Rectangle as the type for rect. If you do this, the Rectange.Width and Rectangle.Height properties get populated, instead of Rectangle.Right and Rectangle.Bottom.
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).
- 1/28/2009
- XenonOfArcticus
Type RECTMS Access usage example:
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
How to Determine the Current Screen Resolution: http://support.microsoft.com/?kbid=210106
- 5/1/2008
- Renaud Bompuis
- 5/1/2008
- Renaud Bompuis
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
- 12/7/2007
- Đonny
- 1/25/2008
- Noelle Mallory