日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法

發布時間:2024/8/1 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++获取子类窗口句柄位置_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 ") )

總結

以上是生活随笔為你收集整理的c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。