X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/56689e1b3a3f573d8adc3f840823547d8478ef75..8397cab4dafee82a887785a80ab8f588a68d9f27:/include/wx/msw/ole/oleutils.h diff --git a/include/wx/msw/ole/oleutils.h b/include/wx/msw/ole/oleutils.h index 157ec93a44..b43624bee2 100644 --- a/include/wx/msw/ole/oleutils.h +++ b/include/wx/msw/ole/oleutils.h @@ -12,19 +12,55 @@ #ifndef _WX_OLEUTILS_H #define _WX_OLEUTILS_H -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "oleutils.h" #endif #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); // ============================================================================ @@ -72,8 +108,8 @@ public: wxAutoULong(ULONG value = 0) : m_Value(value) { } operator ULONG&() { return m_Value; } - ULONG& operator=(ULONG value) { return m_Value = 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