タイトルバーのないフォームの移動 <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