如何使窗口透明
编号:QA000129
建立日期: 1998年11月23日 最后修改日期:2001年4月24日
所属类别:
snowgirl:
如何编一个窗口,使窗口透明,露出墙纸或下面的窗口。(其中的文字图象照显不误)
回答:
为了便于观察,先在窗口上添加两个按钮,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
zttjhm问:
我看了一下,你们关于透明窗体的编法,不过 想编一个真正透明的窗体,意思是当窗体移动时,仍然可以看见下面的东西,而不是给人一种视觉上的透明效果,比如:我在播放视频时,我有一个窗体在上面,如果用你们的做法,将无法看见视频图象(在窗体比视频图象区大的情况下),如何才能做到真正的透明?
答:上面的这种透明窗体的做法已经过时了。对于你的要求你可以使用QA000260 "是否有改变Form外形(如圆形)的方法"的方法,也就是建立异形窗口。
相关问题:
QA002739 "Delphi中如何做透明的窗体"
QA003213 "用Win2000新的API函数制作透明窗口"
此问题由李海回答。
| |
|
|
| |
|
|