回覆列表
  • 1 # 使用者8616219450500

    "透明函式setlayeredwindowattributes

    "使用這個函式,可以輕鬆的實現半透明窗體。按照微軟的要求,透明窗體窗體在建立時應使用ws_ex_layered引數(用createwindowex),或者在建立後設置該引數(用setwindowlong),我選用後者。全部函式、常量宣告如下:

    privatedeclarefunctiongetwindowlonglib"user32"alias"getwindowlonga"(byvalhwndaslong,byvalnindexaslong)aslong

    privatedeclarefunctionsetwindowlonglib"user32"alias"setwindowlonga"(byvalhwndaslong,byvalnindexaslong,byvaldwnewlongaslong)aslong

    privatedeclarefunctionsetlayeredwindowattributeslib"user32"(byvalhwndaslong,byvalcrkeyaslong,byvalbalphaasbyte,byvaldwflagsaslong)aslong

    "其中hwnd是透明窗體的控制代碼,crkey為顏色值,balpha是透明度,取值範圍是[0,255],dwflags是透明方式,可以取兩個值:當取值為lwa_alpha時,crkey引數無效,balpha引數有效;當取值為lwa_colorkey時,balpha引數有效而窗體中的所有顏色為crkey的地方將變為透明--這個功能很有用:我們不必再為建立不規則形狀的窗體而呼叫一大堆區域分析、建立、合併函數了,只需指定透明處的顏色值即可,哈哈哈哈!請看具體程式碼。

    privateconstws_ex_layered=&h80000

    privateconstgwl_exstyle=(-20)

    privateconstlwa_alpha=&h2

    privateconstlwa_colorkey=&h1

    privatesubform_load()

    "半透明

    dimrtnaslong

    rtn=getwindowlong(hwnd,gwl_exstyle)

    rtn=rtnorws_ex_layered

    setwindowlonghwnd,gwl_exstyle,rtn

    setlayeredwindowattributeshwnd,0,125,lwa_alpha

    endsub

  • 中秋節和大豐收的關聯?
  • 膝上型電腦螢幕關掉後怎麼開啟?