1. 程式人生 > >有關視窗物件指標和視窗控制代碼獲取的相關函式。

有關視窗物件指標和視窗控制代碼獲取的相關函式。

順便記錄一下有關視窗物件指標和視窗控制代碼相關的函式。

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)