Идентификатор класса (GUID) обычно задается с помощью последовательности шестнадцатеричных чисел, разделенных штрихами, например. {557cf406-1a04-11d3-9a73-0000f81ef32e}
. Это не литерал, который можно использовать для инициализации структуры CLSID напрямую.Как инициализировать константу CLSID
Я обнаружил два способа инициализации структуры, но они оба неловкие. Первое не позволяет объявить его const
и должно выполняться во время выполнения, а второе требует обширного переформатирования шестнадцатеричных констант.
CLSID clsid1;
CLSIDFromString(CComBSTR("{557cf406-1a04-11d3-9a73-0000f81ef32e}"), &clsid1);
const CLSID clsid2 = { 0x557cf406, 0x1a04, 0x11d3, { 0x9a,0x73,0x00,0x00,0xf8,0x1e,0xf3,0x2e } };
Я знаю, что Visual Studio может сгенерировать автоматически, если у вас есть тип, связанный с UUID, используя __uuidof
operator. Есть ли способ сделать это, если у вас есть только шестнадцатеричная строка?
Ahem: http://stackoverflow.com/questions/5345803/does-gdi-have-standard-image-encoder-clsids –
Вы всегда можете использовать заводскую функцию, которая вызывает 'CLSIDFromString' - что-то вроде' const CLSID clsid1 = GUIDFactoryFunc ("{557cf406-1a04-11d3-9a73-0000f81ef32e}") ' –
@i_am_jorf Почему, по-вашему, я задаю вопрос? Мне нужно использовать ответ из этого вопроса в новой программе, а код, который я написал тогда, - это работа назад и больше недоступна для справки. –