Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Make mouse pointer in the center of the dialog
#1
Hi,

How to Make mouse pointer in the center of the new dialog?  The location of the following dialog box is in the upper-left corner

In addition, the mouse points are located in the four corners of the screen, When I press the hotkey alt+Q, I need the dialog to be displayed in its entirety, and the mouse is located in the center of the dialog box Idea

My English is not good, in short, I need the dialog window to be fully displayed, the window is always in the center of the mouse pointer

Thanks in advance for any advice and help
david


Macro Macro2
Trigger Aq     Help - how to add the trigger to the macro
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
#2
Function Example
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
,SetTimer hDlg 1 100 0
,case WM_TIMER
,mou 0.5 0.5 hDlg;;center of the work area. Default: 0
,;mou 0.5 0.5 hDlg 1;; center window's client area
,KillTimer hDlg 1
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1
#3
My English is not good,
In the following code, I added a mouse mid button trigger

When I press the middle mouse button: 

I need the dialog window to be fully displayed, The central position of the dialog window is always in the center of the mouse pointer

But, When the middle mouse button is pressed at the edge of the screen, it needs to be processed, and the mouse pointer is located in the center of the dialog box 

Macro Macro2
Trigger #M     Help - how to add the trigger to the macro
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
#4
think i understand you now this will center dialog on the mouse

Macro Macro15
Trigger Aq     Help - how to add the trigger to the macro
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C812C8 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: "" 0x2040C00 "*" "" "" ""

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

#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1

on a qm created dialog its easy to center the dialog on the mouse
Just open the dialog editor

click the styles button
   

on next window click DS_CENTERMOUSE
   
click ok the click save
#5
@Kevin

Thank you for your help,
It's not happening yet, red text
 
Change the trigger to  #M
When the middle mouse button is pressed at the edge of the screen, it needs to be processed, and the mouse pointer is located in the center of the dialog box 

When I press the middle button of the mouse at the edge of the screen, A dialog box is displayed, and the pointer of the mouse should be in the center of the dialog box

[Image: a.png]
#6
sorry got busy for a few. This should cover all

Macro Macro17
Trigger #M     Help - how to add the trigger to the macro
Code:
Copy      Help
POINT p; xm(p) ;;get mouse position into p.x and p.y
str dd=
;BEGIN DIALOG
;0 "" 0x90C812C8 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: "" 0x2040C00 "*" "" "" ""

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

#sub DlgProc v
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,SetTimer hDlg 1 100 0    
,case WM_TIMER
,int cx cy waL waW
,GetWorkArea 0 0 waL waW
,GetWinXY hDlg 0 0 cx cy
,if(p.x+cx >= waL || p.x-cy<= 0)
,,mou 0.5 0.5 hDlg;;center of the work area. Default: 0
,if(p.y+cy>= waW || p.y-cy<=0)
,,mou 0.5 0.5 hDlg;;center of the work area. Default: 0        
,KillTimer hDlg 1    
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1
#7
sorry I just saw it
It works well, QM2, always able to implement very powerful functions with very little code
@Kevin Thank you so much
#8
@Kevin

I want to set up a combination trigger, Ctrl + middle mouse buttonSpecifies window, I tried many times and without success

When I press the Ctrl key, then press the middle mouse button on the desktop, The above dialog box will open

I'm also going to use the same combination trigger in other windows, so might need some setting
see: https://www.quickmacros.com/forum/showth...6#pid35636


Forum Jump:


Users browsing this thread: 7 Guest(s)