"目前的許多 windows 下的應用程式,都採用了圖形化的介面,可是在這樣的介面下就不能用 Windows 原來的標題條了,否則會影響介面的美觀。那麼在木有標題條的情形下怎麼用滑鼠拖動窗體或其它的控制元件呢?
其實,採用 API 函式調出使用很容易實現,下邊我們以拖動窗體 Form1 為例來具體講一下實現方法:
1、新建立1個專案,名稱為 test.vbp;
2、填加1個模組,名稱為 test.bas,並且在宣告部分加入以下程式碼:
Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF012
其中 ReleaseCapture 函式是用來釋放滑鼠捕獲的,SendMessage 函式是1個在 Windows API 中非常重要的函式,在這裡的作用是用來向 Windows 傳送移動窗體的訊息。WM_SYSCOMMAND 是向 Windows 傳送訊息的常量。SC_MOVE 是控制移動窗體的常量。請注意:這裡 SC_MOVE 的賦值是 &HF012,表示滑鼠物件。
3、在窗體的 MouseDown 過程中加入以下程式碼:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Sub
其中 ReleaseCapture 函式用來釋放滑鼠捕獲,SendMessage 函式向 Windows 傳送移動窗體的訊息。
"目前的許多 windows 下的應用程式,都採用了圖形化的介面,可是在這樣的介面下就不能用 Windows 原來的標題條了,否則會影響介面的美觀。那麼在木有標題條的情形下怎麼用滑鼠拖動窗體或其它的控制元件呢?
其實,採用 API 函式調出使用很容易實現,下邊我們以拖動窗體 Form1 為例來具體講一下實現方法:
1、新建立1個專案,名稱為 test.vbp;
2、填加1個模組,名稱為 test.bas,並且在宣告部分加入以下程式碼:
Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF012
其中 ReleaseCapture 函式是用來釋放滑鼠捕獲的,SendMessage 函式是1個在 Windows API 中非常重要的函式,在這裡的作用是用來向 Windows 傳送移動窗體的訊息。WM_SYSCOMMAND 是向 Windows 傳送訊息的常量。SC_MOVE 是控制移動窗體的常量。請注意:這裡 SC_MOVE 的賦值是 &HF012,表示滑鼠物件。
3、在窗體的 MouseDown 過程中加入以下程式碼:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Sub
其中 ReleaseCapture 函式用來釋放滑鼠捕獲,SendMessage 函式向 Windows 傳送移動窗體的訊息。
4、儲存並執行程式,按下滑鼠,你會發現窗體會隨著滑鼠的移動而移動。
以上講述了怎麼在 VB 中用滑鼠拖動窗體,其實,控制元件的拖動的原理是一樣的。例如以下程式碼可以實現圖框的拖動:
ReleaseCapture
SendMessage Picture1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0"