X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae199d6e4d36708ec604c2b743e4b3d93213bebd..848c37c35b42e3e18e98a578f794172b8f2c46d0:/src/msw/ole/activex.cpp?ds=inline diff --git a/src/msw/ole/activex.cpp b/src/msw/ole/activex.cpp index 9e418fc892..5b086b77db 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" @@ -206,7 +207,7 @@ public: case DISPID_AMBIENT_SILENT: V_BOOL(pVarResult)= TRUE; return S_OK; - +#ifndef __WINE__ case DISPID_AMBIENT_APPEARANCE: pVarResult->vt = VT_BOOL; pVarResult->boolVal = m_bAmbientAppearance; @@ -241,7 +242,7 @@ public: pVarResult->vt = VT_BOOL; pVarResult->boolVal = m_bAmbientShowHatching; break; - +#endif default: return DISP_E_MEMBERNOTFOUND; } @@ -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); @@ -790,7 +813,6 @@ void wxActiveXContainer::OnPaint(wxPaintEvent& WXUNUSED(event)) // Draw only when control is windowless or deactivated if (m_viewObject) { - dc.BeginDrawing(); int w, h; GetParent()->GetSize(&w, &h); RECT posRect; @@ -799,12 +821,14 @@ 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); - - dc.EndDrawing(); } // We've got this one I think