視窗控制代碼 小知識

2021-10-06 17:14:00 字數 4905 閱讀 9908

1 findwindow

hwnd winapi findwindow(

_in_opt_  lpctstr lpclassname,

_in_opt_  lpctstr lpwindowname

);

該函式通過建立視窗時的類名和視窗名查詢視窗並返回該視窗的控制代碼,函式不會搜尋子視窗。該函式區分大小寫。
引數

lpclassname [in, optional]

type: lpctstr

類名和視窗名是在先前呼叫registerclass or registerclas***時建立的

如果lpclassname為null,他會尋找所有和lpwindowname引數匹配的視窗

lpwindowname [in, optional]

type: lpctstr

視窗的名字也是視窗的title. 如果該引數為null,所有視窗名字都是匹配的.

返回值type: hwnd

如果函式呼叫成功,返回指向該視窗的控制代碼; 否則返回null。得到更多的錯誤資訊呼叫getlasterror

示例:

char classname="notepad";

hwnd hwnd=::findwindow(classname,null);

auto hwnd = findwindow(l"iptip_main_window", null);

注意

如果lpwindowname 非空, findwindow 會呼叫getwindowtext 函式去得到視窗的名字作為比較

2 enumchildwindows

bool callback enumchildproc(hwnd hwnd,lparam lparam)

::enumchildwindows(hwnd,enumchildproc,0);

3 getparent獲得指定視窗父視窗的控制代碼

hwnd getparent(hwnd hwnd);

4gettopwindow獲得指定視窗的第乙個子視窗的控制代碼

gettopwindow函式檢查與特定父視窗相聯的子視窗z序,並返回在z序頂部的子視窗的控制代碼。

hwnd gettopwindow(hwnd hwnd);

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

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

hwnd getwindowhandlebypid(dword dwprocessid)

}h = getnextwindow( h , gw_hwndnext);

} return null;

}

5 getwindow

hwnd getwindow(hwnd hwnd,uint ncmd)

hwnd:視窗控制代碼。這個函式要返回的視窗控制代碼是依據ncmd引數值相對於hwnd引數的關係

ncmd:說明指定視窗與要獲得控制代碼的視窗之間的關係。該引數值可以是下列之一:

gw_child(&h5):如果指定視窗是父視窗,則獲得的是在tab序頂端的子視窗的控制代碼,否則為null。函式僅檢查指定父視窗的子視窗,不檢查繼承視窗。

更多資訊 可以搜尋網路

6 getnextwindow

hwnd getnextwindow(hwnd hwnd,unit wcmd)

wcmd:指明視窗返回的是前一視窗的控制代碼還是後一視窗的控制代碼。該引數可以是下列兩個值之一:

gw_hwndnext:返回在給定視窗的下面視窗的控制代碼。

gw_hwndprev:返回在給定視窗的上面視窗的控制代碼。

gw_hwndfirst = 0;

gw_hwndlast = 1;

gw_hwndnext = 2;

gw_hwndprev = 3;

gw_owner = 4;

gw_child = 5;

7 獲得視窗類名

wchar classname[256];

getclassname(hwnd, classname, sizeof(classname));

if (wcscmp(classname, l"chatroomform") == 0)

continue;

其它與控制代碼有關的還有:

getlastactivepopup 針對指定的視窗,取回上乙個活動的彈出式視窗的控制代碼

setparent 改變任何視窗的父視窗。

bringwindowtotop 使指定的視窗進入可見視窗列表的頂部,如它被部分或全部隱藏,則令其全部可見。同時,該視窗成為當前活動視窗。只有從前台執行緒呼叫時,才生效。

childwindowfrompoint 在規定的座標取得某子視窗的控制代碼(如果有的話),這兒的座標是指相對于父視窗的客戶區座標。

childwindowfrompointex 與childwindowfrompoint相同,功能更強。

clienttoscreen 判斷指定點在視窗客戶區內的螢幕座標。

getclientrect 獲得對視窗客戶區進行表述的乙個矩形(rect)。這是以畫素為單位判斷客戶區大小的乙個簡便的方法。

getwindowplacement 獲得指定視窗的乙個windowplacement結構。該結構說明了視窗的狀態。

getwindowrect 用於獲得乙個矩形(rect)結構,它描述了窗體在螢幕座標系統中的位置。

mapwindowpoints 對某視窗客戶區座標內的乙個或多個點進行轉換,用另一視窗的客戶區座標表示。

movewindow 移動指定視窗的位置,並能改變它的大小。

openicon 將乙個最小化視窗恢復為原始狀態。

screentoclient 針對螢幕內乙個指定的點,用某個特定視窗內的客戶區座標表示它。

setwindowspos 更改視窗的位置和大小,並能修改它在內部視窗列表內的位置(這個列表起著控制視窗先是順序)。

setwindowplacement 在乙個windowplacement結構的基礎上,設定某視窗的特徵。該結構描述了視窗的狀態,以及它在最小化、最大化或正常顯示時的位置。

windowfrompoint 根據螢幕上乙個指定的點,判斷哪個視窗正位於它的下面。

getclassinfo 取得指定視窗的類資訊結構

getclassinfoex 效果類似於getclassinfo,但增加了一些功能

getclasslong,getclassword 用於獲取視窗類資訊

setclasslong,setclassword 用於設定視窗類資訊

getclassname 獲取視窗類名

getdesktopwindow 獲取整個桌面(螢幕)的視窗控制代碼

getwindowlong,getwindowword 獲取與視窗有關的資訊

setwindowlong,setwindowword 設定與視窗有關的資訊

getwindowtext 獲得視窗文字。它的效果大致等價於窗體或控制項的text屬性

getwindowtextlength 獲得視窗文字的長度,用字元數表示。

ischild 判斷某視窗是否為另一視窗的子視窗或從屬視窗。

isiconic 判斷某視窗是否處於最小化狀態

iswindow 判斷指定的控制代碼是否為視窗控制代碼。

iswindowenabled 判斷指定的視窗是否處於活動狀態。

iswindowvisible 判斷某視窗是否可見。

iszoomed 判斷視窗是否處於最大化狀態。

setwindowtext 設定視窗文字。大致等價於窗體或控制項的text屬性。

anypopup 判斷是否存在可見的彈出式視窗

cascadewindows 令視窗在乙個父視窗內層疊顯示

closewindow 對指定的視窗進行最小化處理(如果它是個釘級視窗)對彈出式及子視窗無效

destroywindow 清除指定的視窗以及下屬所有子視窗與包容視窗

drawanimatedrects 獲得視窗開啟或關閉的動畫效果

enablewindow 啟用或遮蔽(禁用)指定視窗

flashwindow 令指定視窗的標題閃爍顯示

getupdaterect 判斷需要更新的那個視窗的位置

getwindowcontexthelpid 取得與視窗關聯在一起的幫助場景

invalidaterect 指定視窗內需要更新的全部或部分客戶區

iswindowunicode 判斷乙個視窗是否期望文字訊息採用unicode格式

lockwindowupdate 允許或禁止描繪指定的視窗

redrawwindow 乙個功能強大的函式,用於控制全部或部分視窗重畫

scrollwindow,scrollwindowex 滾動顯示視窗的全部或部分客戶區

setwindowcontexthelpid 設定與視窗關聯在一起的幫助場景

showownedpopups    隱藏或顯示從屬於指定視窗的所有保容彈出視窗

showwindow              用於設定視窗的狀態,其中包括視窗的隱藏、顯示、最小化、最大化以及啟用等

showwindowasync     類似於showwindow,增加了對其他程序內的視窗進行操作的能力

tilewindows                令視窗在乙個父視窗內平鋪顯示

updatewindow           立即更新視窗內需要更新的任何部分

validaterect                指出全部或部分矩形已經更新,毋需再更新

參考自

5 子視窗呼叫父視窗 視窗控制代碼 小知識總結

1 findwindow hwnd winapi findwindow in opt lpctstr lpclassname,in opt lpctstr lpwindowname 該函式通過建立視窗時的類名和視窗名查詢視窗並返回該視窗的控制代碼,函式不會搜尋子視窗。該函式區分大小寫。引數lpcla...

視窗和控制代碼

視窗是windows 應用程式中的乙個非常重要的元素,乙個 windows 應用程式至少要有乙個視窗,稱為主視窗。視窗是螢幕上的一塊矩形區域,是 windows 應用程式與使用者進行互動的介面。利用視窗,可以接收使用者的輸入,以及顯示輸出。乙個應用程式視窗通常都包含標題欄,選單欄,系統選單,最小化框...

獲取視窗控制代碼

在windows中,控制代碼是乙個系統內部資料結構的引用。例如當你操作乙個視窗,或說是乙個delphi窗體時,系統會給你乙個該視窗的控制代碼,系統會通知你 你正在操作142號視窗,就此你的應用程式就能要求系統對 142號視窗進行操作 移動視窗 改變視窗大小 把視窗最小化等等。實際上許多windows...