C++中各類獲取窗口句柄的方法

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)
返回值:返回值是與調用線程的消息隊列相關的活動窗口的句柄。不然,返回值爲NULL。

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 application’s main frame window .
AfxGetMainWnd ( ) -> SetWindowText (_T("Application title") )
//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 ") )git

相關文章
相關標籤/搜索