03-04-2007, 08:46 PM
EDIT: see also Captionless, movable smart dialog?
Function DragDialog
Function DialogDragExample
Function DragDialog
;/
function hDlg message
;Moves the dialog when the user presses left mouse button on the client area and drags.
;The dialog must be a smart dialog, ie with dialog procedure.
;Call this function from the dialog procedure as shown below:
,;case [WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE] DragDialog hDlg message
POINT- pp_drag
POINT p
RECT r
sel message
,case WM_LBUTTONDOWN
,xm pp_drag
,SetCapture hDlg
,
,case WM_LBUTTONUP
,if(GetCapture=hDlg) ReleaseCapture
,
,case WM_MOUSEMOVE
,if(GetCapture!=hDlg) ret
,GetWindowRect hDlg &r
,xm p
,mov r.left+p.x-pp_drag.x r.top+p.y-pp_drag.y hDlg
,pp_drag=p
Function DialogDragExample
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
if(!ShowDialog("DialogDragExample" &DialogDragExample)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2020003 "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,DT_Init(hDlg lParam) ;;*
,ret 1 ;;*
,case WM_DESTROY DT_DeleteData(hDlg) ;;*
,case WM_COMMAND goto messages2
,case [WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE] DragDialog hDlg message
ret
;messages2
sel wParam
,case IDOK
,DT_Ok hDlg ;;*
,case IDCANCEL DT_Cancel hDlg ;;*
ret 1
;* - not necessary in QM >= 2.1.9