作者tpjobp (邪修歲月)
看板Visual_Basic
標題Re: [VB6 ] 表單特效問題
時間Fri May 4 09:14:24 2007
※ 引述《Berger927 (rabbit)》之銘言:
: 請問有沒有人知道,如何使表單在已經繪製桌布的狀況下,再使表單半透明化?
: 我用API兜,雖然有效果出現,但螢幕左上角會出現一個黑色的遮罩。
: 無論如何就是無法排除掉這個狀況,而且程式關閉後也不會回覆。
: 有請高手解惑,感恩!
忘了在哪邊找到的了
宣告部份:
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd
As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As
Long
Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = (-20)
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
程式碼:
Dim Buf As Long
Buf = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取得視窗原本的樣式
Buf = Buf Or WS_EX_LAYERED '在視窗上面添加一個新的樣式WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, Buf '把新的樣式指定給視窗
SetLayeredWindowAttributes Me.hwnd, 0, R, LWA_ALPHA 'R越大視窗越清楚,為0則變
成全透明(看不到)
方便的話可以說明一下你的半透明是以什麼方式寫的嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.81.88.26
推 Berger927:就是第一個API 05/05 03:57
→ Berger927:第三個參數值可以調整透明度 05/05 03:59
→ Berger927:我們作法一樣,可是你的不會跑出黑色遮罩出來嗎? 05/05 04:02
推 tpjobp:不會 05/06 01:41
推 Berger927:囧... 是我電腦的問題ㄚ... >"< 05/06 03:14
→ Berger927:感謝~~~ ^^ 05/06 03:15