BBC BASIC for Windows
Programming >> User Interface >> WM_CONTEXTMENU oddity http://bb4w.conforums.com/index.cgi?board=ui&action=display&num=1395159836 WM_CONTEXTMENU oddity
Post by rtr on Mar 18th, 2014, 4:23pm
Can I ask those of you who have written 'compliant' GUI applications to check what happens if the keyboard shortcut for the context menu (either Shift+F10 or the Menu key - usually to the right of the space bar) is pressed?
What I'm finding here is that under Windows 2000/XP/7 it works as expected and the WM_CONTEXTMENU message is generated (resulting in a popup menu, usually) but under Windows 8.1 the message is not generated!
I don't know if this is a Windows version thing or something specific to my PC, but I've put a workaround on the Wiki in case anybody else is similarly affected:
Richard.
Re: WM_CONTEXTMENU oddity
Post by DDRM on Mar 19th, 2014, 10:13am
Hi Richard,
I don't have any such programs, but I wrote this to test:
Code:
*SYS1
ON SYS PROCdoSys(@wparam%,@lparam%,@msg%):RETURN
REPEAT
WAIT 1
UNTIL FALSE
END
:
DEFPROCdoSys(w%,l%,m%)
PRINT w%,l% AND &FFFF,l% >>>16,m%
ENDPROC
and it seems to do the right thing (reports a message of 123 for right-mouse clicks and menu button presses, with coordinates in lparam for mouse clicks and -1 for menu button), in both Windows 7 (64 bit) on my desktop and Windows 8 (not 8.1) on my laptop. The laptop is touchscreen, and touch-and-hold also reports like a mouse right-click.
Hope that's helpful.
D
Re: WM_CONTEXTMENU oddity
Post by rtr on Mar 19th, 2014, 1:00pm
it seems to do the right thing (reports a message of 123 for right-mouse clicks and menu button presses
What about Shift+F10? With your code I'm finding that, on my Windows 8.1 machine, the menu key does generate the expected message, but Shift+F10 doesn't! But now (after a reboot) my original program - which previously failed to respond to either Shift+F10 or the menu key, now responds to both!
So basically it's behaving inconsistently. I wonder if there's some 'race hazard' somewhere, but I don't really understand it at all.
Richard. Re: WM_CONTEXTMENU oddity
Post by DDRM on Mar 19th, 2014, 3:41pm
SHift-F10 does nothing on either machine - I tried it, and wondered whether the keyboard EITHER has the menu button OR uses shift-F10 as an equivalent, but it sounds like it isn't as simple as that!
Trying it in my PDF viewer (since it is open...), I see that it DOES respond to both the menu key and shift-F10, in the same way (puts the context menu in the top-left of the window), and to a right-click with a context menu at the site of the mouse. That's on the desktop in Win7. On the laptop, it's a horrible full-screen, windows8-ey version which does weird things, but the same for all 3 (bars appear at the top and bottom).
Word is similar (menu key and shift-F10 pop up the menu at the cursor), but right-click gives TWO pop-up menus!
Best wishes,
D
Re: WM_CONTEXTMENU oddity
Post by rtr on Mar 19th, 2014, 6:58pm
That aspect of the mystery is solved - you won't see the message originating from Shift+F10 if the only window is the 'mainwin' (@hwnd%), which it is in your little test program. The reason I do see it in my application is that there's a child window (an edit control) which is evidently responding to Shift+F10 and sending the WM_CONTEXTMENU message to its parent window.