VB无所不能之四:制作透明和半透明窗体
VB无所不能之四:制作透明和半透明窗体
——作者:钟声
我们经常可以看到这样的窗体,觉得很炫,如图所示:
同样,对Windows系统方面的编程似乎首先想到的绝对不是VB,而大部分程序员想到的一定是VC。
其实,VB对于这个实现非常方便且简单,用到了“user32”中的SetLayeredWindowAttributes()函数。
SetLayeredWindowAttributes()函数介绍:
函数声明:
Declare Function SetLayeredWindowAttributes Lib "user32" () Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
hwnd是透明窗体的句柄,
crKey为颜色值,
bAlpha是透明度,取值范围是[0,255],
dwFlags是透明方式,可以取两个值:当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
当取值为LWA_COLORKEY时,bAlpha参数有效而窗体中的所有颜色为crKey的地方将变为透明。
下面我们做两个实验:
第一个:做一个半透明窗体
步骤一:打开VB建立一个窗体Form
步骤二:将窗体背景颜色设为:&HFF0000
步骤三:将下面代码粘贴到程序中:
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" () Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" () Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function SetLayeredWindowAttributes Lib "user32" () Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = () Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
Sub Form_Load() Sub Form_Load()
&nb
相关文档:
Public Function IsValidIPAddress(ByVal strIPAddress As String) As Boolean
On Error GoTo Handler
Dim varAddress As Variant, n As Long, lCount As Long
varAddress = Split(strIPAddress, ".", , vbTextCompare)
If IsArray(varAd ......
·错误类型
·编程员的错误(比如分母不能是0,参数个数或数据类型不对应)
·环境方面的错误(比如文件太大,磁盘放不下)
·时间上的错误(比如视图给尚未完成加载的窗体设置焦点)
·创建错误处理程序
......
昨天晚上,米老师把我叫到办公室。问我学了一周感觉如何,我当时很汗颜。米老师身体不好,电脑版班么多学生,他可以让自己轻松一点儿,但他没有。作为几十个学生的免费老师,做为人父人夫,老师尚且知道我学了一周成果怎样呢,但我自己却没有想过,很惭愧。犯任何错误第一次可以原谅,但绝不应该让它出现第二次,学了一周, ......
原来的错误是:Timer1的Enabled属性设为True。
代码错误是:
Private Sub Timer1_Timer()
Dim c As Date
c = Time
lbl3.Caption = CStr(c)
End Sub
————————————————&mdas ......
第一次正式去上米老师的课,这次是寒假来后的第一节课,内容主要是交流一下寒假的学习情况。
首先是言行问题:去机房上课时,带胸牌、笔记本、笔、《Visual Basic 程序设计》、鞋套、眼镜,手机能不带就不带;别人发言时,显示器关掉,面向对方以示尊敬。
......