在VB6.0中移動無標題欄的窗口

'*************************************************************
'說明: 在VB6.0中移動無標題欄的窗口
'備註:測試代碼的工程名爲:MoveNoTitle
'原理:捕獲窗體的鼠標按下事件並將HTCAPTION消息發送給窗口
'做者:袁培榮 yuanpeirong@vip.qq.com
'修改時間: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
相關文章
相關標籤/搜索