作者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
1F:推 Berger927:就是第一个API 05/05 03:57
2F:→ Berger927:第三个参数值可以调整透明度 05/05 03:59
3F:→ Berger927:我们作法一样,可是你的不会跑出黑色遮罩出来吗? 05/05 04:02
4F:推 tpjobp:不会 05/06 01:41
5F:推 Berger927:囧... 是我电脑的问题ㄚ... >"< 05/06 03:14
6F:→ Berger927:感谢~~~ ^^ 05/06 03:15