本章学习内容非常少就一个API(GetWindowPlacement)
1. 代码演示
//////////////////////////////////////////////////////////////////////////
BOOL CALLBACK WndEnumProc ( HWND hWnd , LPARAM lParam )
{
HWND hListbox = ( HWND ) lParam ;
if ( NULL == hWnd ) return FALSE ;
if ( NULL != hListbox && IsWindow ( hListbox ) && IsWindowVisible ( hWnd ))
{
TCHAR szWndInfo [512] = {0};
TCHAR szWndTitle [256] = {0};
TCHAR szClsName [64] = {0};
WINDOWPLACEMENT wp = {0};
wp . flags = 0;
wp . length = sizeof ( wp );
RECT rtWnd , rtClient ;
GetWindowRect ( hWnd , & rtWnd );
GetClientRect ( hWnd , & rtClient );
GetWindowText ( hWnd , szWndTitle , 256);
GetClassName ( hWnd , szClsName , 64);
GetWindowPlacement ( hWnd , & wp );
_stprintf ( szWndInfo ,
_T ( "\"%s\"" )
_T ( " %d " )
_T ( "wnd[%d,%d,%d,%d], client[%d,%d,%d,%d], normal[%d,%d,%d,%d] min[%d, %d] max[%d, %d]" ),
szWndTitle ,
wp . showCmd ,
rtWnd . left , rtWnd . top , rtWnd . right , rtWnd . bottom ,
rtClient . left , rtClient . top , rtClient . right , rtClient . bottom ,
wp . rcNormalPosition . left , wp . rcNormalPosition . top , wp . rcNormalPosition . right , wp . rcNormalPosition . bottom ,
wp . ptMinPosition . x , wp . ptMinPosition . y ,
wp . ptMaxPosition . x , wp . ptMaxPosition . y );
SendMessage ( hListbox , LB_ADDSTRING , 0, ( LPARAM ) szWndInfo );
}
return TRUE ;
}
BOOL CALLBACK WndEnumProc ( HWND hWnd , LPARAM lParam )
{
HWND hListbox = ( HWND ) lParam ;
if ( NULL == hWnd ) return FALSE ;
if ( NULL != hListbox && IsWindow ( hListbox ) && IsWindowVisible ( hWnd ))
{
TCHAR szWndInfo [512] = {0};
TCHAR szWndTitle [256] = {0};
TCHAR szClsName [64] = {0};
WINDOWPLACEMENT wp = {0};
wp . flags = 0;
wp . length = sizeof ( wp );
RECT rtWnd , rtClient ;
GetWindowRect ( hWnd , & rtWnd );
GetClientRect ( hWnd , & rtClient );
GetWindowText ( hWnd , szWndTitle , 256);
GetClassName ( hWnd , szClsName , 64);
GetWindowPlacement ( hWnd , & wp );
_stprintf ( szWndInfo ,
_T ( "\"%s\"" )
_T ( " %d " )
_T ( "wnd[%d,%d,%d,%d], client[%d,%d,%d,%d], normal[%d,%d,%d,%d] min[%d, %d] max[%d, %d]" ),
szWndTitle ,
wp . showCmd ,
rtWnd . left , rtWnd . top , rtWnd . right , rtWnd . bottom ,
rtClient . left , rtClient . top , rtClient . right , rtClient . bottom ,
wp . rcNormalPosition . left , wp . rcNormalPosition . top , wp . rcNormalPosition . right , wp . rcNormalPosition . bottom ,
wp . ptMinPosition . x , wp . ptMinPosition . y ,
wp . ptMaxPosition . x , wp . ptMaxPosition . y );
SendMessage ( hListbox , LB_ADDSTRING , 0, ( LPARAM ) szWndInfo );
}
return TRUE ;
}
2. BOOL GetWindowPlacement(HWND hWnd, WINDOWPLACEMENT *lpwndpl )
功能: 该函数返回指定窗口的显示状态以及被恢复的、最大化的和最小化的窗口位置
typedef struct _WINDOWPLACEMENT { UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; } WINDOWPLACEMENT;
返回值说明:
showCmd – 直接COPY MSDNSW_HIDE Hides the window and activates another window. SW_MAXIMIZEMaximizes the specified window. SW_MINIMIZEMinimizes the specified window and activates the next top-level window in the z-order. SW_RESTOREActivates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position.An application should specify this flag when restoring a minimized window. SW_SHOWActivates the window and displays it in its current size and position. SW_SHOWMAXIMIZEDActivates the window and displays it as a maximized window. SW_SHOWMINIMIZEDActivates the window and displays it as a minimized window. SW_SHOWMINNOACTIVEDisplays the window as a minimized window.
This value is similar to SW_SHOWMINIMIZED, except the window is not activated.
SW_SHOWNADisplays the window in its current size and position.This value is similar to SW_SHOW, except the window is not activated.
SW_SHOWNOACTIVATEDisplays a window in its most recent size and position.This value is similar to SW_SHOWNORMAL, except the window is not actived.
SW_SHOWNORMAL 演示代码