MFC獲取視窗控制代碼的方法

2021-06-05 08:53:50 字數 2398 閱讀 2616

afxgetmainwnd

afxgetmainwnd獲取自身視窗控制代碼

hwnd hwnd = afxgetmainwnd()->m_hwnd;

gettopwindow

函式功能:該函式檢查與特定父視窗相聯的子視窗z序(z序:垂直螢幕的方向,即疊放次序),並返回在z序頂部的子視窗的控制代碼。

函式原型:hwnd gettopwindow(hwnd hwnd);

引數:hwnd:被查序的父視窗的控制代碼。如果該引數為null,函式返回z序頂部的視窗控制代碼。

返回值:

如果函式成功,返回值為在z序頂部的子視窗控制代碼。如果指定的視窗無子視窗,返回值為null。

getforegroundwindow

函式功能:該函式返回當前系統的前台視窗的視窗控制代碼。

函式原型:hwnd getforegroundwindow(void)  

返回值:函式返回前台窗回的控制代碼。

getactivewindow

函式原型:hwnd getactivewindow(void)

getsafehwnd

函式功能:獲取某個視窗物件(cwnd的派生物件)指標的控制代碼(hwnd)時,最安全的方法是使用getsafehwnd()函式。

通過下面的例子來看其理由:

cwnd *pwnd = findwindow(「explorewclass」,null); //希望找到資源管理器

hwnd hwnd = pwnd->m_hwnd; //得到它的hwnd

這樣的**當開始得到的pwnd為空的時候就會出現乙個「general protection error」,並關閉應用程式,因為一般不能對乙個null指標訪問其成員,如果用下面的**:

cwnd *pwnd = findwindow(「explorewclass」,null); //希望找到資源管理器

hwnd hwnd = pwnd->getsafehwnd(); //得到它的hwnd

就不會出現問題,因為儘管當pwnd是null時,getsafehwnd仍然可以用,只是返回null

iswindowvisible

函式功能:該函式獲得給定視窗的可視狀態。

函式原型:bool iswindowvisible(hwnd hwnd);

引數;hwnd:被測試視窗的控制代碼。

返回值:

如果指定的視窗及其父視窗具有ws_visible風格,返回值為非零;如果指定的視窗及其父視窗不具有ws_visible風格,返回值為零。由於返回值表明了視窗是否具有ws_visible風格,因此,即使該視窗被其他視窗遮蓋,函式返回值也為非零。

備註:視窗的可視狀態由ws_visible位指示。當設定了ws_visible位,視窗就可顯示,而且只要視窗具有ws_visible風格,任何畫在視窗的資訊都將被顯示。

iswindow:

函式功能:該函式確定給定的視窗控制代碼是否標示乙個已存在的視窗。 

函式原型:bool iswindow(hwnd hwnd);

引數:hwnd:被測試視窗的控制代碼。

返回值:

如果視窗控制代碼標識了乙個已存在的視窗,返回值為ture;如果視窗控制代碼未標識乙個已存在視窗,返回值為false。

findwindow:

hwnd findwindow(lpcstr lpclassname,lpcstr lpwindowname );

引數:lpclassname

指向乙個以null結尾的、用來指定類名的字串或乙個可以確定類名字串的原子。如果這個引數是乙個原子,那麼它必須是乙個在呼叫此函式前已經通過globaladdatom函式建立好的全域性原子。這個原子(乙個16bit的值),必須被放置在lpclassname的低位位元組中,lpclassname的高位位元組置零。

lpwindowname

指向乙個以null結尾的、用來指定視窗名(即視窗標題)的字串。如果此引數為null,則匹配所有視窗名。

返回值:

如果函式執行成功,則返回值是擁有指定視窗類名或視窗名的視窗的控制代碼。

如果函式執行失敗,則返回值為 null 。可以通過呼叫getlasterror函式獲得更加詳細的錯誤資訊。

setwindowtext:

至於視窗標題的改變,我們可以通過setwindowtext來實現

注:如果視窗本身屬性是不顯示標題的,這個函式的呼叫不會影響視窗屬性。

//set title for view』s mdi child frame window .

getparentframe ( ) -> setwindowtext ("_t ("mdi child frame new title") )

//set title for dialog』s push button control.

getdigitem (idc_button) -> setwindowtext (_t ("button new title ") )

MFC 視窗控制代碼獲取

控制代碼獲取方法 獲取該視窗的控制代碼後,即可向該視窗類類傳送訊息 處理程式 0。獲取所在類視窗的控制代碼 this m hwnd 1。主視窗的控制代碼 無論在主視窗類內,還是子視窗類內,獲取主視窗控制代碼的方法 afxgetmainwnd m hwnd,如 sendmessage afxgetma...

獲取視窗的控制代碼方法總結

控制代碼獲取方法 獲取該視窗的控制代碼後,即可向該視窗類類傳送訊息 處理程式 例如 postmessage 控制代碼 wm user drawviewpic eds,0,0 0。獲取所在類視窗的控制代碼 this m hwnd 1。主視窗的控制代碼 無論在主視窗類內,還是子視窗類內,獲取主視窗控制代...

c 獲取視窗控制代碼的方法

findwindow 函式原型 hwnd findwindow lpcstr lpclassname,lpcstr lpwindowname findwindow這個函式檢索處理頂級視窗的類名和視窗名稱匹配指定的字串。這個函式不搜尋子視窗。lpclassname引數指向類名,lpwindowname...