Win32 API講座 視窗函式

2021-09-30 07:11:39 字數 2973 閱讀 7896

位。windows是用乙個長整形的資料的位設定方式來記錄類和視窗樣式的。其中,視窗樣式由乙個32位樣式以及另乙個32

位擴充套件樣式來構成。類樣式操作由上述列表中的getclasslong以及getclasslong來進行,視窗樣式操作由getwindowlong 以及setwindowlong來進行。

由於樣式位的內容較多,我無法在此給出,您可以參考有關手冊。這裡有必要提醒大家的是,您想改變或獲取當前視窗或類的樣式,絕大多數情況可以考慮樣式位操作。下面,就這個問題舉乙個簡單了例子來說明。

下面是用bs_lefttext樣式位將vb核取方塊或選項按鈕的文字在左邊和右邊之間相互移動來、移動去的程式(是附帶的program1.vbp的部分內容)。程式的原理很簡單。首先用

getwindowlong函式獲得當前樣式位的資訊,然後通過位操作來準備新的樣式位資訊,最後用setwindowlong實際地去更改。如下∶

dim f&, dl&

f& = getwindowlong(option1.hwnd, gwl_style)    '獲得當前樣式位的資訊

if index = 0 then

f& = f& or bs_lefttext

else

f& = f& and not bs_lefttext

end if

dl& = setwindowlong(option1.hwnd, gwl_style, f&)    '設定新的樣式

option1.refresh

(對or和and位操作不熟悉的朋友,請參考有關技術資料)

在這裡,對樣式位不進行更詳細討論,主要有這樣乙個原因。用setwindowlong函式改變乙個樣式位之後,不會導致視窗發生相應的變化(至少不會立即變化)。有些樣式位可能在執行時候才會成功變化,而大多數都只在視窗建立時才生效。因為,用api方式建立乙個窗體已經超出了本教程的範圍,就算我在這裡對樣式位談得再多,您可能也沒有多大用處。同時,微軟公司沒有告訴我們哪些樣式位在執行期間安全地改變,因此對具體的情況,只好靠自己進行具體試驗。而從我個人的實際程式設計經驗來看,沒有特別的要求,我們不大會涉及到這些樣式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

其中,flashwindow函式非常有趣,不妨大家試一試。

視窗啟動特效,使用win32 api

一段使用api的視窗特效 自己可以試下,是不是在視窗顯示的時候會顯示各種特殊效果.有點驚喜的感覺 system.runtime.interopservices.dllimport user32 private static extern bool animatewindow intptr hwnd,...

win32API實現透明字幕視窗

hwnd hwnd createwindowex ws ex layered,text testwindow text 透明視窗 ws popup ws visible,0,0,20,20,null,hinstance,null setlayeredwindowattributes hwnd,0,0...

視窗啟動特效,使用win32 api

一段使用api的視窗特效 自己可以試下,是不是在視窗顯示的時候會顯示各種特殊效果.有點驚喜的感覺 system.runtime.interopservices.dllimport user32 private static extern bool animatewindow intptr hwnd,...