X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d66dcb6022662c03aa32f1c7ad306552f1edfdc0..d8c65cf48881468f97798ac521fb93f9b8b5a293:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 0ff6db44ee..5e72624091 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -58,6 +58,17 @@ #include "wx/dnd.h" #endif +#if wxUSE_ACCESSIBILITY + #include "wx/access.h" + #include + #ifndef WM_GETOBJECT + #define WM_GETOBJECT 0x003D + #endif + #ifndef OBJID_CLIENT + #define OBJID_CLIENT 0xFFFFFFFC + #endif +#endif + #include "wx/menuitem.h" #include "wx/log.h" @@ -1876,7 +1887,7 @@ static void wxYieldForCommandsOnly() { wxTheApp->DoMessage((WXMSG *)&msg); } - + // If we retrieved a WM_QUIT, insert back into the message queue. if (msg.message == WM_QUIT) ::PostQuitMessage(0); @@ -2827,6 +2838,20 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam } break; +#if wxUSE_ACCESSIBILITY + case WM_GETOBJECT: + { + //WPARAM dwFlags = (WPARAM) (DWORD) wParam; + LPARAM dwObjId = (LPARAM) (DWORD) lParam; + + if (dwObjId == OBJID_CLIENT && GetOrCreateAccessible()) + { + return LresultFromObject(IID_IAccessible, wParam, (IUnknown*) GetAccessible()->GetIAccessible()); + } + break; + } +#endif + #if defined(__WIN32__) && defined(WM_HELP) case WM_HELP: { @@ -3300,8 +3325,7 @@ bool wxWindowMSW::HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate) bool wxWindowMSW::HandleDestroy() { - wxWindowDestroyEvent event((wxWindow *)this); - (void)GetEventHandler()->ProcessEvent(event); + SendDestroyEvent(); // delete our drop target if we've got one #if wxUSE_DRAG_AND_DROP @@ -4836,6 +4860,12 @@ int wxCharCodeMSWToWX(int keySym) case VK_OEM_6: id = ']'; break; case VK_OEM_7: id = '\''; break; +#ifdef VK_APPS + case VK_LWIN: id = WXK_WINDOWS_LEFT; break; + case VK_RWIN: id = WXK_WINDOWS_RIGHT; break; + case VK_APPS: id = WXK_WINDOWS_MENU; break; +#endif // VK_APPS defined + default: id = 0; }