VC中获取窗体句柄的各种方法
生活随笔
收集整理的這篇文章主要介紹了
VC中获取窗体句柄的各种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AfxGetMainWnd
AfxGetMainWnd獲取自身窗體句柄
HWND hWnd = AfxGetMainWnd()->m_hWnd;
GetTopWindow
函數功能:該函數檢查與特定父窗體相聯(lián)的子窗體z序(Z序:垂直屏幕的方向,即疊放次序),并返回在z序頂部的子窗體的句柄。
函數原型:HWND GetTopWindow(HWND hWnd);
參數:
hWnd:被查序的父窗體的句柄。假設該參數為NULL,函數返回Z序頂部的窗體句柄。
返回值:
? ? 假設函數成功,返回值為在Z序頂部的子窗體句柄。假設指定的窗體無子窗體,返回值為NULL。
GetForegroundWindow
函數功能:該函數返回當前系統(tǒng)的前臺窗體的窗體句柄。
函數原型: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
函數功能:該函數獲得給定窗體的可視狀態(tài)。
函數原型:BOOL IsWindowVisible(HWND hWnd);
參數;
hWnd:被測試窗體的句柄。
返回值:
? ? 假設指定的窗體及其父窗體具有WS_VISIBLE風格,返回值為非零;假設指定的窗體及其父窗體不具有WS_VISIBLE風格,返回值為零。因為返回值表明了窗體是否具有Ws_VISIBLE風格,因此,即使該窗體被其它窗體遮蓋,函數返回值也為非零。
備注:
? ? 窗體的可視狀態(tài)由WS_VISIBLE位指示。當設置了WS_VISIBLE位,窗體就可顯示,并且僅僅要窗體具有WS_VISIBLE風格,不論什么畫在窗體的信息都將被顯示。
IsWindow:
函數功能:該函數確定給定的窗體句柄是否標示一個已存在的窗體。
函數原型:BOOL IsWindow(HWND hWnd);
參數:
? ? hWnd:被測試窗體的句柄。
返回值:
? ? 假設窗體句柄標識了一個已存在的窗體,返回值為TURE;假設窗體句柄未標識一個已存在窗體,返回值為FALSE。
FindWindow:
HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName );
參數:
lpClassName
指向一個以null結尾的、用來指定類名的字符串或一個能夠確定類名字符串的原子。假設這個參數是一個原子,那么它必須是一個在調用此函數前已經通過GlobalAddAtom函數創(chuàng)建好的全局原子。這個原子(一個16bit的值),必須被放置在lpClassName的低位字節(jié)中,lpClassName的高位字節(jié)置零。
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 ") )
AfxGetMainWnd獲取自身窗體句柄
HWND hWnd = AfxGetMainWnd()->m_hWnd;
GetTopWindow
函數功能:該函數檢查與特定父窗體相聯(lián)的子窗體z序(Z序:垂直屏幕的方向,即疊放次序),并返回在z序頂部的子窗體的句柄。
函數原型:HWND GetTopWindow(HWND hWnd);
參數:
hWnd:被查序的父窗體的句柄。假設該參數為NULL,函數返回Z序頂部的窗體句柄。
返回值:
? ? 假設函數成功,返回值為在Z序頂部的子窗體句柄。假設指定的窗體無子窗體,返回值為NULL。
GetForegroundWindow
函數功能:該函數返回當前系統(tǒng)的前臺窗體的窗體句柄。
函數原型: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
函數功能:該函數獲得給定窗體的可視狀態(tài)。
函數原型:BOOL IsWindowVisible(HWND hWnd);
參數;
hWnd:被測試窗體的句柄。
返回值:
? ? 假設指定的窗體及其父窗體具有WS_VISIBLE風格,返回值為非零;假設指定的窗體及其父窗體不具有WS_VISIBLE風格,返回值為零。因為返回值表明了窗體是否具有Ws_VISIBLE風格,因此,即使該窗體被其它窗體遮蓋,函數返回值也為非零。
備注:
? ? 窗體的可視狀態(tài)由WS_VISIBLE位指示。當設置了WS_VISIBLE位,窗體就可顯示,并且僅僅要窗體具有WS_VISIBLE風格,不論什么畫在窗體的信息都將被顯示。
IsWindow:
函數功能:該函數確定給定的窗體句柄是否標示一個已存在的窗體。
函數原型:BOOL IsWindow(HWND hWnd);
參數:
? ? hWnd:被測試窗體的句柄。
返回值:
? ? 假設窗體句柄標識了一個已存在的窗體,返回值為TURE;假設窗體句柄未標識一個已存在窗體,返回值為FALSE。
FindWindow:
HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName );
參數:
lpClassName
指向一個以null結尾的、用來指定類名的字符串或一個能夠確定類名字符串的原子。假設這個參數是一個原子,那么它必須是一個在調用此函數前已經通過GlobalAddAtom函數創(chuàng)建好的全局原子。這個原子(一個16bit的值),必須被放置在lpClassName的低位字節(jié)中,lpClassName的高位字節(jié)置零。
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 ") )
轉載于:https://www.cnblogs.com/mfrbuaa/p/3839822.html
總結
以上是生活随笔為你收集整理的VC中获取窗体句柄的各种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET页面之间传值Applica
- 下一篇: javascript代码解释执行过程