タイトルバーのないフォームの移動 <TOP>
フォームの移動はタイトルバーをドラッグしますが、ない場合のフォームを移動させる場合便利です。
ReleaseCapture マウスのキャプチャを解放する
SendMessage ウィンドウにメッセージを送る
タイトルバーの有無にかかわらず機能しますが、例ではなしに設定しています。
フォーム内をドラッグして移動させます。コントロール上はドラッグできません。終了はフォームを ダブルクリックしてください。
'================================================================ '= タイトルバーのないフォームの移動 '= (ReleaseCapture2.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) ' マウスのキャプチャを解放 Declare Function Api_ReleaseCapture& Lib "user32" Alias "ReleaseCapture" () #define WM_NCLBUTTONDOWN &HA1 '非クライアント領域で左マウスボタンを押す #define HTCAPTION 2 'タイトルバーをクリックしたことを示す #define vbLeftButton 1 '左ボタンクリック '================================================================ '= '================================================================ Declare Sub MainForm_MouseMove edecl (ByVal Button As Integer, ByVal Shift As Integer, ByVal SX As Single, ByVal SY As Single) Sub MainForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal SX As Single, ByVal SY As Single) Var Ret As Long If Button = 1 Then Ret = Api_ReleaseCapture Ret = Api_SendMessage(GethWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) End If End Sub '================================================================ '= '================================================================ Declare Sub MainForm_DblClick edecl (ByVal Button As Integer, ByVal Shift As Integer, ByVal SX As Single, ByVal SY As Single) Sub MainForm_DblClick(ByVal Button As Integer, ByVal Shift As Integer, ByVal SX As Single, ByVal SY As Single) End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End