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