I need to be able to create guids on the fly. Is there a way to do that in MFC? I see how to do it in .net, but we haven't gone there yet. If not, do you have pointers to some code I can use?
Asked
Active
Viewed 1.7k times
5 Answers
13
//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);
}
}

wpqs
- 131
- 1
- 3
12
GUID guid;
HRESULT hr = CoCreateGuid(&guid);
// Convert the GUID to a string
_TUCHAR * guidStr;
UuidToString(&guid, &guidStr);
The application is responsible for calling RpcStringFree
to deallocate the memory allocated for the string returned in the StringUuid parameter.

Mitch Wheat
- 295,962
- 43
- 465
- 541
6
You can use the COM function CoCreateGuid, e.g.:
GUID guid;
HRESULT hr = CoCreateGuid(&guid);

John Sibly
- 22,782
- 7
- 63
- 80
5
Use the function UuidCreate to generate GUIDs :
UUID generated;
if (::UuidCreate(&generated) != RPC_S_OK)
throw std::exception(...);

Edouard A.
- 6,100
- 26
- 31
2
You can use this sample
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]
);

Rory McCrossan
- 331,213
- 40
- 305
- 339

Oriel Dayanim
- 129
- 6