Как я могу создать гид в MFC - PullRequest
9 голосов
/ 17 февраля 2009

Мне нужно иметь возможность создавать направляющие на лету. Есть ли способ сделать это в MFC? Я вижу, как это сделать в .net, но мы еще не пошли туда. Если нет, у вас есть указатели на какой-нибудь код, который я могу использовать?

Ответы [ 5 ]

12 голосов
/ 31 января 2013
   //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);
        }
    }
11 голосов
/ 17 февраля 2009
GUID guid;
HRESULT hr = CoCreateGuid(&guid); 

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

Приложение отвечает за вызов RpcStringFree для освобождения памяти, выделенной для строки, возвращаемой в параметре StringUuid.

6 голосов
/ 17 февраля 2009

Вы можете использовать функцию COM CoCreateGuid, например ::10000

GUID guid;
HRESULT hr = CoCreateGuid(&guid);
5 голосов
/ 17 февраля 2009

Используйте функцию UuidCreate для генерации GUID:

UUID generated;

if (::UuidCreate(&generated) != RPC_S_OK)
throw std::exception(...);
1 голос
/ 08 октября 2015

Вы можете использовать этот образец

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]
        );
...