2009-02-17 7 views
8

Ich muss in der Lage sein, Guids im laufenden Betrieb zu erstellen. Gibt es eine Möglichkeit, das in MFC zu tun? Ich sehe, wie man es in .net macht, aber wir sind noch nicht dorthin gegangen. Wenn nicht, haben Sie Zeiger auf Code, den ich verwenden kann?Wie kann ich eine GUID in MFC erstellen

Antwort

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

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

Die Anwendung ist für den Aufruf RpcStringFree verantwortlich, den Speicher freizugeben:

UUID generated; 

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

die Funktion UuidCreate verwenden GUIDs zu generieren:

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

Sie den COM-Funktion CoCreateGuid, zum Beispiel verwenden können reserviert für die im Parameter StringUuid zurückgegebene Zeichenfolge.

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 für die Fehlerbehandlung verwenden. – Jichao

+0

+1 für die Notiz zum Hinzufügen von Rpcrt4.lib zum Projekt – mrt

1

können Sie diese Probe

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] 
     ); 
Verwandte Themen