有關視窗物件指標和視窗控制代碼獲取的相關函式。
順便記錄一下有關視窗物件指標和視窗控制代碼相關的函式。
Win32 API函式對視窗的操作總是需要一個視窗控制代碼(hWnd)來指向需要操作的物件;比如::SetWindowPos(hWnd,...)
而MFC內,視窗控制代碼已經包含在物件成員內,需要的是指向視窗物件的指標(pWnd),這樣就可以對此物件的成員函式操作了。比如pWnd->SetWindowPos(...)
常用獲得函式:
AfxGetApp() // 這個不是視窗,相當於theApp,順便列在這裡。
以下是MFC中獲取視窗物件指標的函式(Win32 API的話就是獲得視窗控制代碼):
AfxGetMainWnd()
GetParent()
GetOwner()
GetDlgItem( intnID)
GetActiveWindow( )
GetTopWindow( ) // 獲取Child風格的視窗物件指標
GetForegroundWindow( )
GetPane( int row, int col
)
FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName )
GetWindow( UINT nCmd )
FromHandle( HWNDhWnd)
GetTopLevelParent( )
GetTopLevelOwner( ) // the window that is a child of the desktop
另外,在文件/檢視架構程式中,還有:
GetActivePane(int* pRow = NULL, int*
pCol = NULL) // Virtual, called by framework,Override to require an action by the user before getting the active pane
GetActiveView( ) // View也是從CWnd派生而來
GetActiveFrame( ) // Frame也是從CWnd派生而來 virtual
GetTopLevelFrame( ) // Frame也是從CWnd派生而來
以下是MFC中獲取視窗控制代碼函式:
GetSafeHwnd( )
當然在MFC內,你通過以上諾幹方法獲取了視窗物件的指標,呼叫GetSafeHwnd( )也就獲得了這些視窗的控制代碼。
另外順便列些常用的獲取控制代碼的函式:
AfxGetInstanceHandle( ) // 應用程式的Instance控制代碼,有些Win32 API函式呼叫的時候需要這個控制代碼。
AfxGetResourceHandle( )
AfxGetThread( )
GetMenu( )
GetDlgCtrlID( ) // The numeric identifier of the
CWnd child window (not only for dialog window)