From: Paul S. <pm...@gm...> - 2011-01-05 12:14:16
|
Hello, Here's one typical pearl from Microsoft. 2 pages describing SHRecognizeGesture(): http://msdn.microsoft.com/en-us/library/aa925176.aspx "If a context menu gesture was recognized, a WM_CONTEXTMENU message will be sent to shrg->hwndClient and propagated up the parent chain if not handled." http://msdn.microsoft.com/en-us/library/aa458077.aspx No mentioning of WM_CONTEXTMENU The first page is marked as Windows Mobile 6.5. So, how to understand that? Have they been providing incompatible behavior for WinCE (GN_CONTEXTMENU notification instead of WM_CONTEXTMENU) and several years later learned what is interface contract and that it's bad to break it, and added sending WM_CONTEXTMENU, or did they just have been forgetting "to state the obvious" (typical blog headline of one of Microsoft guys - http://blogs.msdn.com/b/oldnewthing/archive/2006/03/02/542115.aspx) for years? Looking at the real code: iDialer - explicitly calls SHRecognizeGesture(), handles WM_CONTEXTMENU GSPlayer - doesn't call SHRecognizeGesture() (apparently relies on by-default tap-and-hold support in common controls), handles GN_CONTEXTMENU. tManCfg - doesn't call SHRecognizeGesture() (but it's MFC app, MFC should call that), handles GN_CONTEXTMENU. So, it's not my confusion, people for years used on WinCE something different than on Win32. Google gives scarce results. Some people reported WM_CONTEXTMENU not being available on eVC3, etc., but that might be user error. Does anyone have an idea about this stuff? -- Best regards, Paul mailto:pm...@gm... |