这个问题,我写过这样一个mp3播放机,又不能有标题栏,又要在任务栏上显示窗口的caption属性,不能设置form1.minibutton,maxbutton,cotrolbox 为false 来实现,这样任务栏上一条白块,什么也没有.只有用api来实现.用form的mouse_down mouse_move来解决,窗口的移动问题. Option Explicit Dim leaveLeft As Integer Dim leaveTop As Integer private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long private sub form_load()dim rgn as long rgn = CreateRectRgn(3, 22, 305, 183) '设定显示区域,把窗口的标题栏放在显示区外. Call SetWindowRgn(Form1.hWnd, rgn, True) '显示end subPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then leaveLeft = X leaveTop = Y End IfEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Me.Left = X + Me.Left - leaveLeft Me.Top = Y + Me.Top - leaveTop End IfEnd Sub
在运行时修改窗口样式即可
To jifeng:没有用处啊?一点反应都没有。
然后自己 加几个 commandButton 模拟 最小化,最大化,关闭按纽
现在的问题是:怎样得到鼠标点击了 ‘任务栏上程序对应的按钮’的消息?
又没有其它办法?
Option Explicit
Dim leaveLeft As Integer
Dim leaveTop As Integer
private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
private sub form_load()dim rgn as long
rgn = CreateRectRgn(3, 22, 305, 183) '设定显示区域,把窗口的标题栏放在显示区外.
Call SetWindowRgn(Form1.hWnd, rgn, True) '显示end subPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
leaveLeft = X
leaveTop = Y
End IfEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Me.Left = X + Me.Left - leaveLeft
Me.Top = Y + Me.Top - leaveTop
End IfEnd Sub
如要改变显示区域的大小,标题栏的大小在运行时除了随窗口增宽变化外,我不知道有没有办法增高.如果有,那倒是存在另想办法取得工作区左上座标的问题.