2009-02-17 10 views
8

Je dois être capable de créer des guids à la volée. Existe-t-il un moyen de le faire dans MFC? Je vois comment le faire en .net, mais nous n'y sommes pas encore allés. Si non, avez-vous des pointeurs vers un code que je peux utiliser?Comment créer un guid dans MFC

Répondre

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

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

L'application est responsable d'appeler RpcStringFree à désaffecter la mémoire alloué pour la chaîne renvoyée dans le paramètre StringUuid.

5

Utilisez la fonction UuidCreate pour générer GUIDs:

UUID generated; 

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

Vous pouvez utiliser la fonction COM CoCreateGuid, par exemple:

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 pour le traitement des erreurs. – Jichao

+0

+1 pour la note sur l'ajout de Rpcrt4.lib au projet – mrt

1

Vous pouvez utiliser cet exemple

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] 
     ); 
Questions connexes