2009-02-17 83 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] 
     );