X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8183307507e8f19ddafa8c6e656dfa383e472678..8397cab4dafee82a887785a80ab8f588a68d9f27:/include/wx/msw/ole/oleutils.h diff --git a/include/wx/msw/ole/oleutils.h b/include/wx/msw/ole/oleutils.h index 9f71b28de5..b43624bee2 100644 --- a/include/wx/msw/ole/oleutils.h +++ b/include/wx/msw/ole/oleutils.h @@ -18,13 +18,49 @@ #include "wx/defs.h" +#if wxUSE_OLE + // get IUnknown, REFIID &c #include +#include "wx/intl.h" // ============================================================================ // General purpose functions and macros // ============================================================================ +// ---------------------------------------------------------------------------- +// initialize/cleanup OLE +// ---------------------------------------------------------------------------- + +// call OleInitialize() or CoInitialize[Ex]() depending on the platform +// +// return true if ok, false otherwise +inline bool wxOleInitialize() +{ + // we need to initialize OLE library +#ifdef __WXWINCE__ + if ( FAILED(::CoInitializeEx(NULL, COINIT_MULTITHREADED)) ) +#else + if ( FAILED(::OleInitialize(NULL)) ) +#endif + { + wxLogError(_("Cannot initialize OLE")); + + return false; + } + + return true; +} + +inline void wxOleUninitialize() +{ +#ifdef __WXWINCE__ + ::CoUninitialize(); +#else + ::OleUninitialize(); +#endif +} + // ---------------------------------------------------------------------------- // misc helper functions/macros // ---------------------------------------------------------------------------- @@ -39,7 +75,7 @@ inline void ReleaseInterface(IUnknown *pIUnk) // release the interface pointer (if !NULL) and make it NULL #define RELEASE_AND_NULL(p) if ( (p) != NULL ) { p->Release(); p = NULL; }; -// return TRUE if the iid is in the array +// return true if the iid is in the array extern bool IsIidFromList(REFIID riid, const IID *aIids[], size_t nCount); // ============================================================================ @@ -73,7 +109,7 @@ public: operator ULONG&() { return m_Value; } ULONG& operator=(ULONG value) { m_Value = value; return m_Value; } - + wxAutoULong& operator++() { ++m_Value; return *this; } const wxAutoULong operator++( int ) { wxAutoULong temp = *this; ++m_Value; return temp; } @@ -176,20 +212,20 @@ public: wxBasicString(const char *sz); wxBasicString(const wxString& str); ~wxBasicString(); - + void Init(const char* sz); - + // accessors // just get the string operator BSTR() const { return m_wzBuf; } // retrieve a copy of our string - caller must SysFreeString() it later! BSTR Get() const { return SysAllocString(m_wzBuf); } - + private: // @@@ not implemented (but should be) wxBasicString(const wxBasicString&); wxBasicString& operator=(const wxBasicString&); - + OLECHAR *m_wzBuf; // actual string }; @@ -205,6 +241,16 @@ BSTR wxConvertStringToOle(const wxString& str); // Convert string from BSTR to wxString wxString wxConvertStringFromOle(BSTR bStr); +#else // !wxUSE_OLE + +// ---------------------------------------------------------------------------- +// stub functions to avoid #if wxUSE_OLE in the main code +// ---------------------------------------------------------------------------- + +inline bool wxOleInitialize() { return false; } +inline void wxOleUninitialize() { } + +#endif // wxUSE_OLE/!wxUSE_OLE #endif //_WX_OLEUTILS_H