vb6.0中能否实现像千千静听皮肤那样的指定色透明的功能?

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:07:22
我想制作一个软件,但界面是不规则的,API函数我不太懂,也就是不会制作异形窗体,并且我要做的窗体比较复杂。

但在千千静听里,制作皮肤时只需将想设透明的地方填涂指定色,比如纯紫色,调用时就变成透明的了。

VB6.0中可以实现这样的功能么?是不是也要用API函数呢?
注意:并不是指让窗体透明化,那样窗体上的控件也透明了。。。
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1

Private Sub Form_Load()
Dim rtn As Long
BorderStyler = 0
rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, &H80C0FF, 0, LWA_COLORKEY '将扣去窗口中的蓝色
End Sub
这应该是我想用的,但用起来并不管用,怎么回事呢?win2000能用的xp应该没问题吧,那个颜色换到PS里应该用80C0FF,对吧?
(前面还有一大堆声明,写不开了,原文链接http://topic.csdn.net/t/20010925/10/301629.html

VB6。0不行,要用API
vb.net可以。只要改属性。

用这个函数没错。

你的hwnd没有写清楚,这样hwnd是没定义的,要指定具体窗体的hwnd,如form1.hwnd

rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, &H80C0FF, 0, LWA_COLORKEY

中的hwnd参数,全部改成 me.hwnd ,即当前窗口的hwnd