#pragma hdrstop
#endif
-#include <wx/setup.h>
+#include "wx/setup.h"
-#if wxUSE_DRAG_AND_DROP
+#if wxUSE_OLE && wxUSE_DRAG_AND_DROP
// standard headers
+#if wxCHECK_W32API_VERSION( 1, 0 )
+ #include <windows.h>
+#endif
#include <rpc.h> // UUID related functions
-#include <wx/msw/ole/uuid.h>
+#include "wx/msw/ole/uuid.h"
// force the string to be allocated by RPC
// (we free it later with RpcStringFree)
+#ifdef _UNICODE
+ UuidToString(&m_uuid, (unsigned short **)&m_pszUuid);
+#else
UuidToString(&m_uuid, &m_pszUuid);
+#endif
// allocate new buffer
- m_pszCForm = new char[UUID_CSTRLEN];
+ m_pszCForm = new wxChar[UUID_CSTRLEN];
// and fill it
- memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN);
+ memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN*sizeof(wxChar));
}
// assignment operator
// force the string to be allocated by RPC
// (we free it later with RpcStringFree)
+#ifdef _UNICODE
+ UuidToString(&m_uuid, (unsigned short **)&m_pszUuid);
+#else
UuidToString(&m_uuid, &m_pszUuid);
+#endif
// allocate new buffer if not done yet
if ( !m_pszCForm )
- m_pszCForm = new char[UUID_CSTRLEN];
+ m_pszCForm = new wxChar[UUID_CSTRLEN];
// and fill it
- memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN);
+ memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN*sizeof(wxChar));
return *this;
}
// this string must be allocated by RPC!
// (otherwise you get a debug breakpoint deep inside RPC DLL)
if ( m_pszUuid )
+#ifdef _UNICODE
+ RpcStringFree((unsigned short **)&m_pszUuid);
+#else
RpcStringFree(&m_pszUuid);
+#endif
// perhaps we should just use a static buffer and not bother
// with new and delete?
m_uuid = uuid;
// get string representation
+#ifdef _UNICODE
+ UuidToString(&m_uuid, (unsigned short **)&m_pszUuid);
+#else
UuidToString(&m_uuid, &m_pszUuid);
+#endif
// cache UUID in C format
UuidToCForm();
}
// set the value
-bool Uuid::Set(const char *pc)
+bool Uuid::Set(const wxChar *pc)
{
// get UUID from string
- if ( UuidFromString((uchar *)pc, &m_uuid) != RPC_S_OK)
+#ifdef _UNICODE
+ if ( UuidFromString((unsigned short *)pc, &m_uuid) != RPC_S_OK)
+#else
+ if ( UuidFromString((wxUChar *)pc, &m_uuid) != RPC_S_OK)
+#endif
// failed: probably invalid string
return FALSE;
// transform it back to string to normalize it
+#ifdef _UNICODE
+ UuidToString(&m_uuid, (unsigned short **)&m_pszUuid);
+#else
UuidToString(&m_uuid, &m_pszUuid);
+#endif
// update m_pszCForm
UuidToCForm();
void Uuid::UuidToCForm()
{
if ( m_pszCForm == NULL )
- m_pszCForm = new char[UUID_CSTRLEN];
+ m_pszCForm = new wxChar[UUID_CSTRLEN];
- wsprintf(m_pszCForm, "0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x2.2%X,"
- "0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X",
+ wsprintf(m_pszCForm, wxT("0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X"),
m_uuid.Data1, m_uuid.Data2, m_uuid.Data3,
- m_uuid.Data4[1], m_uuid.Data4[2], m_uuid.Data4[3], m_uuid.Data4[4],
- m_uuid.Data4[5], m_uuid.Data4[6], m_uuid.Data4[7], m_uuid.Data4[8]);
+ m_uuid.Data4[0], m_uuid.Data4[1], m_uuid.Data4[2], m_uuid.Data4[3],
+ m_uuid.Data4[4], m_uuid.Data4[5], m_uuid.Data4[6], m_uuid.Data4[7]);
}
#endif