X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4708068cb62f59675e0f255bcfdaa23a54e06f0a..dc497201eb08e3de1402480e2ab97a6405335ecb:/src/msw/ole/activex.cpp diff --git a/src/msw/ole/activex.cpp b/src/msw/ole/activex.cpp index 0463a8843a..e6a9fc2902 100644 --- a/src/msw/ole/activex.cpp +++ b/src/msw/ole/activex.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/ole/activex.cpp +// Name: src/msw/ole/activex.cpp // Purpose: wxActiveXContainer implementation // Author: Ryan Norton , Lindsay Mathieson // Modified by: @@ -24,6 +24,7 @@ #endif #include "wx/dcclient.h" +#include "wx/math.h" #include "wx/msw/ole/activex.h" @@ -375,7 +376,17 @@ public: //*************************IOleInPlaceSiteEx*********************** HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx(BOOL * pfNoRedraw, DWORD) { +#ifdef __WXWINCE__ + IRunnableObject* runnable = NULL; + HRESULT hr = QueryInterface( + IID_IRunnableObject, (void**)(& runnable)); + if (SUCCEEDED(hr)) + { + runnable->LockRunning(TRUE, FALSE); + } +#else OleLockRunning(m_window->m_ActiveX, TRUE, FALSE); +#endif if (pfNoRedraw) (*pfNoRedraw) = FALSE; return S_OK; @@ -383,7 +394,17 @@ public: HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(BOOL) { +#ifdef __WXWINCE__ + IRunnableObject* runnable = NULL; + HRESULT hr = QueryInterface( + IID_IRunnableObject, (void**)(& runnable)); + if (SUCCEEDED(hr)) + { + runnable->LockRunning(FALSE, FALSE); + } +#else OleLockRunning(m_window->m_ActiveX, FALSE, FALSE); +#endif return S_OK; } STDMETHOD(RequestUIActivate)(){ return S_OK;} @@ -437,7 +458,9 @@ public: HRESULT STDMETHODCALLTYPE LockContainer(BOOL){return S_OK;} //********************IOleItemContainer*************************** HRESULT STDMETHODCALLTYPE - #ifdef _UNICODE + #if defined(__WXWINCE__) + GetObject + #elif defined(_UNICODE) GetObjectW #else GetObjectA @@ -741,7 +764,7 @@ static void PixelsToHimetric(SIZEL &sz) }; #define HIMETRIC_INCH 2540 -#define CONVERT(x, logpixels) MulDiv(HIMETRIC_INCH, (x), (logpixels)) +#define CONVERT(x, logpixels) wxMulDivInt32(HIMETRIC_INCH, (x), (logpixels)) sz.cx = CONVERT(sz.cx, logX); sz.cy = CONVERT(sz.cy, logY); @@ -799,7 +822,11 @@ void wxActiveXContainer::OnPaint(wxPaintEvent& WXUNUSED(event)) posRect.right = w; posRect.bottom = h; +#if defined(_WIN32_WCE) && _WIN32_WCE < 400 + ::InvalidateRect(m_oleObjectHWND, NULL, false); +#else ::RedrawWindow(m_oleObjectHWND, NULL, NULL, RDW_INTERNALPAINT); +#endif RECTL *prcBounds = (RECTL *) &posRect; m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, (HDC)dc.GetHDC(), prcBounds, NULL, NULL, 0);