Added context menu support under PocketPC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37762 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
42b16af462
commit
7d4f65e393
@ -137,6 +137,11 @@ public:
|
||||
virtual bool UnregisterHotKey(int hotkeyId);
|
||||
#endif // wxUSE_HOTKEY
|
||||
|
||||
#ifdef __POCKETPC__
|
||||
bool IsContextMenuEnabled() const { return m_contextMenuEnabled; }
|
||||
void EnableContextMenu(bool enable = true) { m_contextMenuEnabled = enable; }
|
||||
#endif
|
||||
|
||||
// window handle stuff
|
||||
// -------------------
|
||||
|
||||
@ -502,6 +507,10 @@ private:
|
||||
wxPoint m_pendingPosition;
|
||||
wxSize m_pendingSize;
|
||||
|
||||
#ifdef __POCKETPC__
|
||||
bool m_contextMenuEnabled;
|
||||
#endif
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxWindowMSW)
|
||||
DECLARE_NO_COPY_CLASS(wxWindowMSW)
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
@ -110,6 +110,12 @@
|
||||
|
||||
#if defined(__WXWINCE__)
|
||||
#include "wx/msw/wince/missing.h"
|
||||
#ifdef __POCKETPC__
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
#include <ole2.h>
|
||||
#include <aygshell.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(TME_LEAVE) && defined(WM_MOUSELEAVE)
|
||||
@ -487,6 +493,10 @@ void wxWindowMSW::Init()
|
||||
|
||||
m_pendingPosition = wxDefaultPosition;
|
||||
m_pendingSize = wxDefaultSize;
|
||||
|
||||
#ifdef __POCKETPC__
|
||||
m_contextMenuEnabled = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@ -2582,6 +2592,35 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
wxCHECK_MSG( win, 0,
|
||||
_T("FindWindowForMouseEvent() returned NULL") );
|
||||
}
|
||||
#ifdef __POCKETPC__
|
||||
if (IsContextMenuEnabled() && message == WM_LBUTTONDOWN)
|
||||
{
|
||||
SHRGINFO shrgi = {0};
|
||||
|
||||
shrgi.cbSize = sizeof(SHRGINFO);
|
||||
shrgi.hwndClient = (HWND) GetHWND();
|
||||
shrgi.ptDown.x = x;
|
||||
shrgi.ptDown.y = y;
|
||||
|
||||
shrgi.dwFlags = SHRG_RETURNCMD;
|
||||
// shrgi.dwFlags = SHRG_NOTIFYPARENT;
|
||||
|
||||
if (GN_CONTEXTMENU == ::SHRecognizeGesture(&shrgi))
|
||||
{
|
||||
wxPoint pt(x, y);
|
||||
pt = ClientToScreen(pt);
|
||||
|
||||
wxContextMenuEvent evtCtx(wxEVT_CONTEXT_MENU, GetId(), pt);
|
||||
|
||||
evtCtx.SetEventObject(this);
|
||||
if (GetEventHandler()->ProcessEvent(evtCtx))
|
||||
processed = true;
|
||||
else
|
||||
return MSWDefWindowProc(message, wParam, lParam);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#else // !__WXWINCE__
|
||||
wxWindowMSW *win = this;
|
||||
#endif // __WXWINCE__/!__WXWINCE__
|
||||
|
Loading…
Reference in New Issue
Block a user