Posts: 1,031
Threads: 246
Joined: Jul 2022
08-02-2022, 12:11 PM
(This post was last modified: 08-02-2022, 12:36 PM by Davider.)
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
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
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
Posts: 1,336
Threads: 61
Joined: Jul 2006
Function Example
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
Posts: 1,031
Threads: 246
Joined: Jul 2022
08-02-2022, 12:50 PM
(This post was last modified: 08-02-2022, 01:01 PM by Davider.)
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
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
Posts: 1,336
Threads: 61
Joined: Jul 2006
08-02-2022, 01:04 PM
(This post was last modified: 08-02-2022, 01:22 PM by Kevin.)
think i understand you now this will center dialog on the mouse
Macro Macro15
Trigger Aq
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
Posts: 1,031
Threads: 246
Joined: Jul 2022
08-02-2022, 01:16 PM
(This post was last modified: 08-02-2022, 01:24 PM by Davider.)
@ 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
Posts: 1,336
Threads: 61
Joined: Jul 2006
sorry got busy for a few. This should cover all
Macro Macro17
Trigger #M
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
Posts: 1,031
Threads: 246
Joined: Jul 2022
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
Posts: 1,031
Threads: 246
Joined: Jul 2022
08-06-2022, 09:41 AM
(This post was last modified: 08-06-2022, 09:44 AM by Davider.)
@Kevin
I want to set up a combination trigger, Ctrl + middle mouse button + Specifies 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
|