如何做透明窗体?谢
如何做透明窗体?谢 问题点数:45、回复次数:11Top
1 楼lily0000000(heaven)回复于 2002-01-25 16:28:58 得分 15
如 何 使 窗 口 透 明
为 了 便 于 观 察, 先 在 窗 口 上 添 加 两 个 按 钮, Command1和 Command2。 加 上 如 下 代 码 :
Private Sub Command1_Click()
Print "Hello"
End Sub
Private Sub Command2_Click()
End
End Sub
这 两 个 按 钮 一 个 用 于 终 止 程 序 运 行 , 一 个 用 于 显 示 文 字 。
然 后 , 将 Form的 Border设 为 None。
最 后 , 在 Form的 声 明 部 分 加 上 以 下 代 码 :
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild _
As Long, ByVal hWndNewParent As Long) As Long
Const WS_EX_TRANSPARENT = &H20&
Const GWL_EXSTYLE = (-20)
最 后 , 在 Form中 加 上 如 下 代 码 。
Private Sub Form_Load()
SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT
End Sub
Top
2 楼uguess(天地间,有我在行走!)回复于 2002-01-25 16:30:04 得分 15
制造出透明的Form
来源:cww
说实在的我不知道这所谓透明的Form用在什麽地方,它变成透明後,只要有所移动,
或Mouse移到TitleBae处时,结果总是令人感到莫名奇妙,所以我设定BorderStyle = 0
,令之没有TitleBar。网路上见许多人问起,故有这程式;若有人知道这是用在何处,
请告诉我。
後来我在一个不小心,发现另一种作法令Form变透明的方式,而且比目前的作法好用
请叁考透明的Form上显示背景透通图
可以用SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)来完成
'form上有Command1, command2两个Button并事先设定form之BorderStyle = 0
Option Explicit
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
Const GWL_EXSTYLE = (-20)
Const WS_EX_TRANSPARENT = &H20&
Private PreValue As Long
Private Sub Command2_Click() '还原变成不透明
Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, PreValue)
Me.Hide
Me.Show
End Sub
Private Sub Form_Load()
Dim i As Long
i = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
'变成透明的Form
PreValue = SetWindowLong(Me.hwnd, GWL_EXSTYLE, i Or WS_EX_TRANSPARENT)
Me.Show
DoEvents
Command1.Refresh '令Command1可见
Command2.Refresh '令Command2可见
End SubTop
3 楼dbcontrols(泰山__抛砖引玉)回复于 2002-01-25 16:32:58 得分 15
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Sub Form_Load()
Me.AutoRedraw = True
hBitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
SelectObject Me.hdc, hBitmap
Me.Refresh
End Sub
Top
4 楼ccto(大水壶)回复于 2002-01-25 17:11:04 得分 0
这样做出的窗体可否响应鼠标事件?为什么Form_Click事件没响应,应如何做?Top
5 楼ccto(大水壶)回复于 2002-01-25 21:48:53 得分 0
?
Top
6 楼Bardo(巴顿(永远只有一个))回复于 2002-01-25 21:56:18 得分 0
再用透明标签!
Top
7 楼minglx(我会给你分)回复于 2002-01-25 22:10:16 得分 0
请问一下半透明的呢Top
8 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-01-25 22:19:18 得分 0
http://www.dapha.net/soure/form/Transparent%20Buttons%20(UPDATED).zip
93KB
透明按钮,带有光晕.
Top
9 楼estrella(笨)回复于 2002-01-25 22:37:09 得分 0
关注
Top
10 楼wjying(葡萄)回复于 2002-01-26 03:06:44 得分 0
xueTop
11 楼ccto(大水壶)回复于 2002-02-17 13:13:22 得分 0
不解?Top




