2009-02-17 76 views
8

我需要能够实时创建GUID。有没有办法在MFC中做到这一点?我看到如何在.net中完成,但我们还没有去过。如果不是,你有指向我可以使用的一些代码吗?我如何在MFC中创建GUID

回答

10
GUID guid; 
HRESULT hr = CoCreateGuid(&guid); 

// Convert the GUID to a string 
_TUCHAR * guidStr; 
UuidToString(&guid, &guidStr); 

应用程序负责调用RpcStringFree解除分配内存分配给StringUuid参数中返回的字符串。

5

使用功能UuidCreate生成的GUID:

UUID generated; 

if (::UuidCreate(&generated) != RPC_S_OK) 
throw std::exception(...); 
6

您可以使用COM功能CoCreateGuid,如:

GUID guid; 
HRESULT hr = CoCreateGuid(&guid); 
8
//don't forget to add Rpcrt4.lib to your project 

    CString m_ListID(L"error"); 
    RPC_WSTR guidStr; 
    GUID guid; 
    HRESULT hr = CoCreateGuid(&guid); 
    if (hr == S_OK) 
    { 
     if(UuidToString(&guid, &guidStr) == RPC_S_OK) 
     { 
      m_ListID = (LPTSTR)guidStr; 
      RpcStringFree(&guidStr); 
     } 
    } 
+0

+1的错误处理。 – Jichao 2013-10-14 09:23:08

1

您可以使用此示例

WCHAR  GuidText[250] ={0}; 
UUID  uuid; 

CoCreateGuid (&uuid); 
wsprintf(
     GuidText, 
     L"%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", 
     uuid.Data1, 
     uuid.Data2, 
     uuid.Data3, 
     uuid.Data4[0], uuid.Data4[1], 
     uuid.Data4[2], uuid.Data4[3], uuid.Data4[4], uuid.Data4[5], uuid.Data4[6], uuid.Data4[7] 
     );