タイトルバーのないフォームの移動 <TOP>
フォームの移動はタイトルバーをドラッグしますが、ない場合のフォームを移動させる場合便利です。
ReleaseCapture マウスのキャプチャを解放する
SendMessage ウィンドウにメッセージを送る
タイトルバーの有無にかかわらず機能しますが、例ではなしに設定しています。
フォーム内をドラッグして移動させます。コントロール上はドラッグできません。終了はフォーム外をクリックしてください。
'================================================================ '= FORMの移動 Caption(タイトルバー)がない場合便利
'= (FormMove.bas) '================================================================ #include "Windows.bi" ' マウスのキャプチャを解放 Declare Function Api_ReleaseCapture& Lib "user32" Alias "ReleaseCapture" () ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define HTCAPTION 2 'タイトル バーをクリックしたことを示す #define WM_NCLBUTTONDOWN &HA1 '非クライアント領域で左マウスボタンを押す Var Shared MainForm As Object Var Shared Bitmap As Object BitmapObject Bitmap MainForm.Attach GethWnd '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() On Error Goto *Er_Trap Bitmap.LoadFile "GRAYWALL.BMP" '無くても可 DRAWBitmap Bitmap, 0, 0 Bitmap.DeleteObject MainForm.ShowWindow -1 Exit Sub *Er_Trap Retume Next End Sub '================================================================ '= '================================================================ Declare Sub MainForm_MouseDown edecl (Button%, Shift%, X!, Y!) Sub MainForm_MouseDown(Button%, Shift%, X!, Y!) Var Ret As Long Ret = Api_ReleaseCapture() Ret = API_SendMessage(GethWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_KillFocus edecl () Sub MainForm_KillFocus() End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End