Un ID di classe (GUID) viene generalmente specificato con una sequenza di numeri esadecimali separati da trattini, ad es. {557cf406-1a04-11d3-9a73-0000f81ef32e}
. Questo non è un valore letterale che può essere utilizzato per inizializzare direttamente una struttura CLSID.Come inizializzare un CLSID costante
Ho scoperto due modi per inizializzare la struttura, ma sono entrambi piuttosto scomodi. Il primo non consente di dichiararlo const
e deve essere eseguito in fase di esecuzione, mentre il secondo richiede una riformattazione estesa delle costanti esadecimali.
CLSID clsid1;
CLSIDFromString(CComBSTR("{557cf406-1a04-11d3-9a73-0000f81ef32e}"), &clsid1);
const CLSID clsid2 = { 0x557cf406, 0x1a04, 0x11d3, { 0x9a,0x73,0x00,0x00,0xf8,0x1e,0xf3,0x2e } };
so che Visual Studio può generare uno automaticamente se si dispone di un tipo che è associato con un UUID, utilizzando il __uuidof
operator. C'è un modo per farlo se hai solo la stringa esadecimale?
Ahem: http://stackoverflow.com/questions/5345803/does-gdi-have-standard-image-encoder-slids –
È possibile utilizzare sempre una funzione factory che chiama 'CLSIDFromString' - qualcosa come' const CLSID clsid1 = GUIDFactoryFunc ("{557cf406-1a04-11d3-9a73-0000f81ef32e}") ' –
@i_am_jorf perché pensi che stia facendo la domanda? Ho bisogno di usare la risposta di quella domanda in un nuovo programma, e il codice che ho scritto è un lavoro fa e non è più disponibile come riferimento. –