/////////////////////////////////////////////////////////////////////////////
-// Name: msw/ole/activex.cpp
+// Name: src/msw/ole/activex.cpp
// Purpose: wxActiveXContainer implementation
// Author: Ryan Norton <wxprojects@comcast.net>, Lindsay Mathieson <???>
// Modified by:
#pragma hdrstop
#endif
-#include "wx/dcclient.h"
-#include "wx/math.h"
+#if wxUSE_ACTIVEX
-// I don't know why members of tagVARIANT aren't found when compiling
-// with Wine
-#ifndef __WINE__
+#ifndef WX_PRECOMP
+ #include "wx/dcclient.h"
+ #include "wx/math.h"
+#endif
#include "wx/msw/ole/activex.h"
// autointerfaces that we only use here
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)\
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)\
{\
delete this;\
return 0;\
- };\
+ }\
return refCount.l;\
}\
else\
{\
InterlockedIncrement(&lockCount.l);\
return lockCount.l;\
- };\
+ }\
ULONG STDMETHODCALLTYPE cls::ReleaseLock()\
{\
if (lockCount.l > 0)\
if (! SUCCEEDED(hr))
{
return E_UNEXPECTED;
- };
+ }
hr = QueryInterface(IID_IOleInPlaceUIWindow, (void **) ppDoc);
if (! SUCCEEDED(hr))
(*ppFrame)->Release();
*ppFrame = NULL;
return E_UNEXPECTED;
- };
+ }
RECT rect;
::GetClientRect(m_hWndParent, &rect);
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);
case OLEGETMONIKER_UNASSIGN : return "OLEGETMONIKER_UNASSIGN";
case OLEGETMONIKER_TEMPFORUSER : return "OLEGETMONIKER_TEMPFORUSER";
default : return "Bad Enum";
- };
- };
+ }
+ }
const char *OleGetWhicMonikerStr(DWORD dwWhichMoniker)
{
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)
{
HRESULT STDMETHODCALLTYPE LockContainer(BOOL){return S_OK;}
//********************IOleItemContainer***************************
HRESULT STDMETHODCALLTYPE
- #ifdef __WXWINCE__
+ #if 0 // defined(__WXWINCE__) && __VISUALC__ < 1400
GetObject
#elif defined(_UNICODE)
GetObjectW
return E_FAIL;
m_window->m_docView->SetInPlaceSite(inPlaceSite);
- };
+ }
m_window->m_docView->UIActivate(TRUE);
return S_OK;
- };
+ }
protected:
OLE_IINTERFACE(IOleDocumentSite)
OLE_IINTERFACE(IAdviseSink)
OLE_IINTERFACE(IOleControlSite)
-END_OLE_TABLE;
+END_OLE_TABLE
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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()
{
}
*_interface = (IUnknown *) (IDispatch *) self;
desc = "Custom Dispatch Interface";
return true;
- };
+ }
return false;
}
OLE_IINTERFACE(IUnknown)
OLE_INTERFACE(IID_IDispatch, IDispatch)
OLE_INTERFACE_CUSTOM(wxActiveXEventsInterface)
-END_OLE_TABLE;
+END_OLE_TABLE
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
continue;
// check if default event sink
- bool defInterface = false;
bool defEventSink = false;
int impTypeFlags = 0;
typeInfo->GetImplTypeFlags(i, &impTypeFlags);
wxFAIL_MSG(wxT("Default event sink is in vtable!"));
}
}
- else
- {
- // WXOLE_TRACEOUT("Default Interface");
- defInterface = true;
- }
}
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)
);
}
}
// 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;
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
}
}
event.Skip();
}
-#endif
-// __WINE__
+#endif // wxUSE_ACTIVEX