在VB6.0中移动无标题栏的窗口

'*************************************************************
'说明: 在VB6.0中移动无标题栏的窗口
'备注:测试代码的工程名为:MoveNoTitle
'原理:捕获窗体的鼠标按下事件并将HTCAPTION消息发送给窗口
'作者:袁培荣 [email protected]
'修改时间:2011年09月24日
'*************************************************************

'第一步:声明Windows API函数并定义常量,代码如下:
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const HTCAPTION = 2     '常量定义
Const WM_NCLBUTTONDOWN = &HA1

'第二步:处理窗体的鼠标按下事件,代码如下:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
                                        '窗体的鼠标事件
    Dim i, Xx As Long
    If Button = 1 Then                  '如果按下鼠标左键
        i = ReleaseCapture()            '释放鼠标捕获
        Xx = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) '将消息发给窗口
    End If
End Sub

'第三步:注意,这一步并不是实现功能必须的,但是却是重要的
'VC++创建的对话框窗体默认有一个确定按钮可以关闭窗体,而VB中是没有的
'VB的窗体只在标题栏中有关闭按钮,这里我们的窗体是无标题栏的
'那么我们就没有关闭按钮来关闭程序了,这样是危险的
'因此我们要加入关闭窗体的事件,这里选择以双击窗体来退出程序
'当然读者也可以在窗体中加个按钮,并加入关闭窗体的代码也可以,方法很多
Private Sub Form_DblClick()   '双击窗体事件
    Unload Me     '退出,这里也可以将 Unload Me 换成 End 也可以
End Sub


你可能感兴趣的:(在VB6.0中移动无标题栏的窗口)