C++ 初始化GUID变量:如何初始化?

C++ 初始化GUID变量:如何初始化?,c++,winapi,C++,Winapi,我正在尝试初始化一个变量,但我不确定这是你要做的。我特别困惑的是如何在char数组中存储最后12个十六进制数字(我是否包括“-”字符?) 如何定义/初始化GUID变量? bool TVManager::isMonitorDevice(GUID id) { // Class GUID for a Monitor is: {4d36e96e-e325-11ce-bfc1-08002be10318} GUID monitorClassGuid; char* a

我正在尝试初始化一个变量,但我不确定这是你要做的。我特别困惑的是如何在char数组中存储最后12个十六进制数字(我是否包括“-”字符?)

如何定义/初始化GUID变量?

bool TVManager::isMonitorDevice(GUID id)
{
    // Class GUID for a Monitor is: {4d36e96e-e325-11ce-bfc1-08002be10318}

    GUID monitorClassGuid;
    char* a                = "bfc1-08002be10318"; // do I store the "-" character?
    monitorClassGuid.Data1 = 0x4d36e96e;
    monitorClassGuid.Data2 = 0xe325;
    monitorClassGuid.Data3 = 0x11ce;
    monitorClassGuid.Data4 = a;

    return (bool(id == monitorClassGuid));
}

Data4
成员不是指针,而是数组。你会想要:

monitorClassGuid.Data4 = { 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 };
让你的榜样发挥作用。您可能会发现,在定义
monitorClassGuid
变量的同时进行所有初始化会更容易:

GUID monitorClassGuid = { 0x4d36e96e, 0xe325, 0x11c3, { 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } };

这个问题很久以前就被问过了,但也许它对其他人有帮助

您可以使用以下代码初始化GUID:

#include <combaseapi.h>;

GUID guid;
CLSIDFromString(L"{4d36e96e-e325-11ce-bfc1-08002be10318}", &guid);
#包括;
GUID;
CLSIDFromString(L“{4d36e96e-e325-11ce-bfc1-08002be10318},&guid);

以下是我在使用COM时的做法。这个答案如何解决OP的问题?-1,这不是一个有用的/相关的答案,因为它只创建全新的GUID,而不是定义OP想要的现有已知GUID。