X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/557002cf8162a0073dbc7050732cb6d75e184148..556151f5ff1bd2fa44de2237a3ad03694c2e3883:/src/msw/ole/activex.cpp diff --git a/src/msw/ole/activex.cpp b/src/msw/ole/activex.cpp index d3bcdd6271..108bd936b9 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: @@ -23,7 +23,10 @@ #pragma hdrstop #endif -#include "wx/dcclient.h" +#ifndef WX_PRECOMP + #include "wx/dcclient.h" +#endif + #include "wx/math.h" // I don't know why members of tagVARIANT aren't found when compiling @@ -41,7 +44,7 @@ WX_DECLARE_AUTOOLE(wxAutoITypeInfo, ITypeInfo) WX_DECLARE_AUTOOLE(wxAutoIConnectionPoint, IConnectionPoint) WX_DECLARE_AUTOOLE(wxAutoIConnectionPointContainer, IConnectionPointContainer) -DEFINE_EVENT_TYPE(wxEVT_ACTIVEX); +DEFINE_EVENT_TYPE(wxEVT_ACTIVEX) // Ole class helpers (sort of MFC-like) from wxActiveX #define DECLARE_OLE_UNKNOWN(cls)\ @@ -69,21 +72,21 @@ DEFINE_EVENT_TYPE(wxEVT_ACTIVEX); if (! ppvObject)\ {\ return E_FAIL;\ - };\ + }\ const char *desc = NULL;\ cls::_GetInterface(this, iid, ppvObject, desc);\ if (! *ppvObject)\ {\ return E_NOINTERFACE;\ - };\ + }\ ((IUnknown * )(*ppvObject))->AddRef();\ return S_OK;\ - };\ + }\ ULONG STDMETHODCALLTYPE cls::AddRef()\ {\ InterlockedIncrement(&refCount.l);\ return refCount.l;\ - };\ + }\ ULONG STDMETHODCALLTYPE cls::Release()\ {\ if (refCount.l > 0)\ @@ -93,7 +96,7 @@ DEFINE_EVENT_TYPE(wxEVT_ACTIVEX); {\ delete this;\ return 0;\ - };\ + }\ return refCount.l;\ }\ else\ @@ -103,7 +106,7 @@ DEFINE_EVENT_TYPE(wxEVT_ACTIVEX); {\ InterlockedIncrement(&lockCount.l);\ return lockCount.l;\ - };\ + }\ ULONG STDMETHODCALLTYPE cls::ReleaseLock()\ {\ if (lockCount.l > 0)\ @@ -381,7 +384,7 @@ public: if (! SUCCEEDED(hr)) { return E_UNEXPECTED; - }; + } hr = QueryInterface(IID_IOleInPlaceUIWindow, (void **) ppDoc); if (! SUCCEEDED(hr)) @@ -389,7 +392,7 @@ public: (*ppFrame)->Release(); *ppFrame = NULL; return E_UNEXPECTED; - }; + } RECT rect; ::GetClientRect(m_hWndParent, &rect); @@ -398,13 +401,13 @@ public: lprcPosRect->left = lprcPosRect->top = 0; lprcPosRect->right = rect.right; lprcPosRect->bottom = rect.bottom; - }; + } if (lprcClipRect) { lprcClipRect->left = lprcClipRect->top = 0; lprcClipRect->right = rect.right; lprcClipRect->bottom = rect.bottom; - }; + } memset(lpFrameInfo, 0, sizeof(OLEINPLACEFRAMEINFO)); lpFrameInfo->cb = sizeof(OLEINPLACEFRAMEINFO); @@ -484,8 +487,8 @@ public: case OLEGETMONIKER_UNASSIGN : return "OLEGETMONIKER_UNASSIGN"; case OLEGETMONIKER_TEMPFORUSER : return "OLEGETMONIKER_TEMPFORUSER"; default : return "Bad Enum"; - }; - }; + } + } const char *OleGetWhicMonikerStr(DWORD dwWhichMoniker) { @@ -495,8 +498,8 @@ public: case OLEWHICHMK_OBJREL : return "OLEWHICHMK_OBJREL"; case OLEWHICHMK_OBJFULL : return "OLEWHICHMK_OBJFULL"; default : return "Bad Enum"; - }; - }; + } + } STDMETHOD(GetMoniker)(DWORD, DWORD, IMoniker **){return E_FAIL;} HRESULT STDMETHODCALLTYPE GetContainer(LPOLECONTAINER * ppContainer) { @@ -523,7 +526,7 @@ public: HRESULT STDMETHODCALLTYPE LockContainer(BOOL){return S_OK;} //********************IOleItemContainer*************************** HRESULT STDMETHODCALLTYPE - #ifdef __WXWINCE__ + #if 0 // defined(__WXWINCE__) && __VISUALC__ < 1400 GetObject #elif defined(_UNICODE) GetObjectW @@ -623,11 +626,11 @@ public: return E_FAIL; m_window->m_docView->SetInPlaceSite(inPlaceSite); - }; + } m_window->m_docView->UIActivate(TRUE); return S_OK; - }; + } protected: @@ -666,7 +669,7 @@ DEFINE_OLE_TABLE(FrameSite) OLE_IINTERFACE(IOleDocumentSite) OLE_IINTERFACE(IAdviseSink) OLE_IINTERFACE(IOleControlSite) -END_OLE_TABLE; +END_OLE_TABLE //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -691,7 +694,7 @@ private: public: wxActiveXEvents(wxActiveXContainer *ax) : m_activeX(ax), m_haveCustomId(false) {} - wxActiveXEvents(wxActiveXContainer *ax, REFIID iid) : m_activeX(ax), m_haveCustomId(true), m_customId(iid) {} + wxActiveXEvents(wxActiveXContainer *ax, REFIID iid) : m_activeX(ax), m_customId(iid), m_haveCustomId(true) {} virtual ~wxActiveXEvents() { } @@ -771,7 +774,7 @@ bool wxActiveXEventsInterface(wxActiveXEvents *self, REFIID iid, void **_interfa *_interface = (IUnknown *) (IDispatch *) self; desc = "Custom Dispatch Interface"; return true; - }; + } return false; } @@ -780,7 +783,7 @@ DEFINE_OLE_TABLE(wxActiveXEvents) OLE_IINTERFACE(IUnknown) OLE_INTERFACE(IID_IDispatch, IDispatch) OLE_INTERFACE_CUSTOM(wxActiveXEventsInterface) -END_OLE_TABLE; +END_OLE_TABLE //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // @@ -946,7 +949,7 @@ void wxActiveXContainer::CreateActiveX(REFIID iid, IUnknown* pUnk) hret = cp->Advise(new wxActiveXEvents(this, ta->guid), &adviseCookie); wxASSERT_MSG( SUCCEEDED(hret), - wxString::Format(wxT("Cannot connect!\nHRESULT:%X"), hret) + wxString::Format(wxT("Cannot connect!\nHRESULT:%X"), (unsigned int)hret) ); } } @@ -1115,28 +1118,6 @@ void wxActiveXContainer::OnPaint(wxPaintEvent& WXUNUSED(event)) // Draw only when control is windowless or deactivated if (m_viewObject) { -#if 0 - dc.BeginDrawing(); - RECT rcClient; - ::GetClientRect((HWND)GetHandle(), &rcClient); - - HBITMAP hBitmap = CreateCompatibleBitmap((HDC)dc.GetHDC(), - rcClient.right - rcClient.left, - rcClient.bottom - rcClient.top); - HDC hdcCompatible = ::CreateCompatibleDC((HDC)dc.GetHDC()); - HBITMAP hBitmapOld = (HBITMAP)SelectObject(hdcCompatible, hBitmap); - - m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, - hdcCompatible, (RECTL *) &rcClient, (RECTL *) &rcClient, NULL, 0); - - ::BitBlt((HDC)dc.GetHDC(), 0, 0, rcClient.right, rcClient.bottom, hdcCompatible, 0, 0, SRCCOPY); - - ::SelectObject(hdcCompatible, hBitmapOld); - ::DeleteObject(hBitmap); - ::DeleteDC(hdcCompatible); - dc.EndDrawing(); -#else - dc.BeginDrawing(); int w, h; GetParent()->GetSize(&w, &h); RECT posRect; @@ -1145,13 +1126,14 @@ void wxActiveXContainer::OnPaint(wxPaintEvent& WXUNUSED(event)) posRect.right = w; posRect.bottom = h; +#if !(defined(_WIN32_WCE) && _WIN32_WCE < 400) ::RedrawWindow(m_oleObjectHWND, NULL, NULL, RDW_INTERNALPAINT); +#else + ::InvalidateRect(m_oleObjectHWND, NULL, false); +#endif RECTL *prcBounds = (RECTL *) &posRect; m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, (HDC)dc.GetHDC(), prcBounds, NULL, NULL, 0); - - dc.EndDrawing(); -#endif } }