vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏

时间:2024-12-12 09:03:32

入吾QQ群183435019 (学习 交流+唠嗑)

有很多时候,我们为了美观,将会自己画一个标题栏,这时候我们会把原来的标题栏取消掉,最简单的方法是吧窗体的BorderStyle设置成为0,

然后自己画一个标题栏充当,但是这个时候任务栏不会显示程序预览图,如果用C语言CreateWindow创建过窗口的童鞋,一定知道dwStyle参数 ,改参数规定了窗口所拥有的样式。

什么是窗口样式呢,去MSDN 一搜便知。

如下图:

vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏

例如:一个窗口有最大化按钮,这就是一个样式

窗口样式拥有两种

1:普通样式 如上图所看到的

2:扩展样式 如下图

vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏

其实WS_EX前缀代表就是扩展的样式

可以看到扩展样式中有一个WS_EX_APPWINDOW窗口中可见时将强制在任务栏上的*窗口。他就是今天我们的主要任务。

那么怎么给窗体加上这个样式呢

那就是调用SetwindowLong函数

所有代码如下

Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const WS_EX_APPWINDOW As Long = &H40000
Private Const GWL_EXSTYLE As Long = -20

Private Sub Form_Load()

Dim rut As Long
rut = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
rut = rut Or WS_EX_APPWINDOW
SetWindowLong Me.hwnd, GWL_EXSTYLE, rut

End Sub

先调用GetWindowLong获取窗体原有的样式,在调用SetWindowLong 在这个基础上增加一个新的样式

注意:首先把BorderStyle属性设置为0,然后运行程序

vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏