Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Positioning corner of Dialog
#1
DS_CENTERMOUSE centers the dialog on the mouse cursor. What I would like however is not the middle of the dialog but the top left corner of the dialog to appear at current cursor location. Is this possible?
#2
try this
Function DialogOpenAtMousePositionExample
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C802C8 0x0 0 0 224 136 "Dialog"
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040800 "*" "" "" ""

if(!ShowDialog(dd &sub.DlgProc 0)) ret

#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,POINT p; xm(p) ;;get mouse position into p.x and p.y
,mov p.x p.y hDlg
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1
#3
Thank you Kevin, this works great!

In addition, is there a way to catch the (blinking) text cursor location(not the mouse pointer) in the currently active application and launch the dialog at that exact spot?
#4
something like this may not be accurate enough

Function DialogOpenAtCursorPositionExample
Code:
Copy      Help
int x y
GetCaretXY x y
str dd=
;BEGIN DIALOG
;0 "" 0x90C802C8 0x0 0 0 224 136 "Dialog"
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040800 "*" "" "" ""

if(!ShowDialog(dd &sub.DlgProc 0)) ret

#sub DlgProc v
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,mov  x y hDlg
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1
#5
No, sadly this appears to not be reliable enough.
Nevermind, the one with the mouse cursor works great :-)


Forum Jump:


Users browsing this thread: 1 Guest(s)