Page 1 of 1

DEFINE CONTEXT MENU OF Win open on wrong Monitor

Posted: Thu Jan 12, 2023 1:22 am
by AUGE_OHR
hi,

not sure it i have ask before but Position of CONTEXT MENU appear on wrong Monitor

my 2nd Monitor (WQHD) is LEFT of my 1st Monitor (Full-HD) when run app so Position is "negative"
App is running on 2nd Monitor (left Side) but CONTEXT MENU open on 1st Monitor (right Side)

Re: DEFINE CONTEXT MENU OF Win open on wrong Monitor

Posted: Thu Jan 12, 2023 8:42 pm
by mol
I have the same

Re: DEFINE CONTEXT MENU OF Win open on wrong Monitor

Posted: Fri Jan 13, 2023 12:12 am
by AUGE_OHR
hi,

i rember i have fix it ...

on "that" PC was a "clean" HMG Version so my "fixes" are not present

c:\hmg.3.4.4\SOURCE\h_windows.PRG
WM_CONTEXTMENU.JPG
WM_CONTEXTMENU.JPG (145.61 KiB) Viewed 2269 times
search for all (WM_LBUTTONDOWN, WM_MOUSEMOVE and WM_CONTEXTMENU)

Code: Select all

*         _HMG_MouseRow := HIWORD( lParam )
*         _HMG_MouseCol := LOWORD( lParam )
and change it to

Code: Select all

// change by Jimmy
         aPos := GetCursorPos()
         _HMG_MouseRow := aPos[1] // GetCursorRow()
         _HMG_MouseCol := aPos[2] // GetCursorCol()
Context Menu now Popup on "other" Positon but on 1st Monitor so still Position is wrong ...

c:\hmg.3.4.4\SOURCE\c_windows.c
GetCursorPos.JPG
GetCursorPos.JPG (37.85 KiB) Viewed 2269 times
HB_FUNC ( GETCURSORPOS )
IMHO Original is wrong

Code: Select all

   hb_storvni( pt.y, -1, 1 );
   hb_storvni( pt.x, -1, 2 );
when change to

Code: Select all

   hb_storvni( pt.x, -1, 1 );
   hb_storvni( pt.y, -1, 2 );
it does return right Position on "left" Monitor in right Position

Re: DEFINE CONTEXT MENU OF Win open on wrong Monitor

Posted: Fri Jan 13, 2023 1:59 am
by AUGE_OHR
hi,

when read what i wrote about c_windows.c / GETCURSORPOS i´m not sure any more about X/Y ...

better when using

Code: Select all

   _HMG_MouseRow := GetCursorRow()
   _HMG_MouseCol := GetCursorCol()

Code: Select all

   _HMG_SYSDATA[ 191 ] := GetCursorRow()
   _HMG_SYSDATA[ 192 ] := GetCursorCol()
you are on "safe" Side

forgot

Code: Select all

*  TrackPopupMenu( _HMG_SYSDATA[ 74 ] [ i ], LOWORD( lparam ), HIWORD( lparam ), hWnd )
   TrackPopupMenu( _HMG_SYSDATA[ 74 ] [ i ], GetCursorCol(), GetCursorRow(), hWnd )