⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uuid.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
///////////////////////////////////////////////////////////////////////////////// Name:        src/msw/ole/uuid.cpp// Purpose:     implements Uuid class, see uuid.h for details// Author:      Vadim Zeitlin// Modified by:// Created:     12.09.96// RCS-ID:      $Id: uuid.cpp,v 1.24 2006/09/07 19:01:42 ABX Exp $// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>// Licence:     wxWindows licence///////////////////////////////////////////////////////////////////////////////// ============================================================================// Declarations// ============================================================================// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#if defined(__BORLANDC__)#pragma hdrstop#endif#if wxUSE_OLE && ( wxUSE_DRAG_AND_DROP || (defined(__WXDEBUG__) && wxUSE_DATAOBJ) )#ifndef WX_PRECOMP    #include "wx/msw/wrapwin.h"#endif#include  <rpc.h>                       // UUID related functions#include  "wx/msw/ole/uuid.h"// ============================================================================// Implementation// ============================================================================// length of UUID in C format#define   UUID_CSTRLEN  100     // real length is 66// copy ctorUuid::Uuid(const Uuid& uuid){  // bitwise copy Ok for UUIDs  m_uuid = uuid.m_uuid;  // 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 wxChar[UUID_CSTRLEN];  // and fill it  memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN*sizeof(wxChar));}// assignment operatorUuid& Uuid::operator=(const Uuid& uuid){  m_uuid = uuid.m_uuid;  // 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 wxChar[UUID_CSTRLEN];  // and fill it  memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN*sizeof(wxChar));  return *this;}// dtorUuid::~Uuid(){  // 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?  if ( m_pszCForm )    delete [] m_pszCForm;}// update string representation of new UUIDvoid Uuid::Set(const UUID &uuid){  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();}// create a new UUIDvoid Uuid::Create(){  UUID uuid;  // can't fail  UuidCreate(&uuid);  Set(uuid);}// set the valuebool Uuid::Set(const wxChar *pc){  // get UUID from string#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();  return true;}// stores m_uuid in m_pszCForm in a format required by// DEFINE_GUID macro: i.e. something like//  0x7D8A2281L,0x4C61,0x11D0,0xBA,0xBD,0x00,0x00,0xC0,0x18,0xBA,0x27// m_pszUuid is of the form (no, it's not quite the same UUID :-)//  6aadc650-67b0-11d0-bac8-0000c018ba27void Uuid::UuidToCForm(){  if ( m_pszCForm == NULL )    m_pszCForm = new wxChar[UUID_CSTRLEN];  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[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  // wxUSE_DRAG_AND_DROP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -