Public globalX As Integer
Public globalY As Integer
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move X - globalX, Y - globalY
End Sub
Private Sub Frame1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Frame1.Drag vbBeginDrag
globalX = X
globalY = Y
End Sub
Private Sub Label1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Label1.Drag vbBeginDrag
globalX = X
globalY = Y
End Sub
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Picture1.Drag vbBeginDrag
globalX = X
globalY = Y
End Sub
Title bar가 없는 form 이동시키기
Title bar가 없는 form 이동시키기 WM_NCLBUTTON 메세지는 사용자가 윈도우즈 타이틀바에 오른쪽버튼을 클릭할때 윈도우즈에 의해서 생성되어 짐니다. 윈도우즈 시스템은 사용자의 다음 행동에 의해 이메세지를 통해 어떻게 움직여야 할지 결정합니다. 만약 타이틀 바가 없다면 이 메세지는 생성 되지않습니다. 그럼에도 불구하고 ,종종 타이틀 바가 없는경우,윈도우를 움직일때 유용하게 쓰임니다. 32-bit Visual Basic 에서 다음의 경우 타이틀 바가 없는 윈도우 창이나 폼이 나타남니다. Visual Basic 4.0 Visual Basic 5.0 Caption = "" Caption = "" ControlBox = False ControlBox = False MaxButton = False MinButton = False 다음 코드는 사용자가 폼의 어느 위치에서건 클릭 한후 그래그,드롭하여 타이틀 바가없는 윈도우창을 움직일수 있도록 기술한것 입니다 다음 코드를Form1의 MouseMove 이벤트 함수 또는 원한다면 다른 이벤트 함수에 추가하십시오 예를 들어, 이 코드는 Label 콘트롤을 클릭해서 선택한후 드래그,드롭으로 폼의 위치를 변경시키킬려고 하는경우, Label 콘트롤의 MouseDown 이벤트 함수에 쓰일수 있습니다 비주얼 베이직 4.0 에서는 디폴트로 폼에 메뉴가 있을 경우, 자동으로 타이틀 바를 지원합니다 따라서, 다음에 나오는 코드를 사용할 필요가 없습니다. 비주얼 베이직 5.0 에서는 디폴트로 폼에 메뉴가 있을 경우, 자동으로 타이틀 바를 지원하지 않습니다 Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "User32" () Const WM_NCLBUTTONDOWN = &HA1 Const HTCAPTION = 2 Private Sub Form_Load() Command1.Caption = "Exit" End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim lngReturnValue As Long If Button = 1 Then Call ReleaseCapture lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub Private Sub Command1_Click() End End Sub 윈도우즈 시스템어서 거의 모든 제어나 통신은 메세지로 가능합니다 따라서 SendMessage API 함수는 많은 활용을 할수가 있습니다