投稿日 | : 2005/07/29(Fri) 10:39 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^2: OleCreatePictureIndirectについて |
> >IID_IDispatch.id(8) = &HC0
> >IID_IDispatch.id(15) = &H46
> とピクチャオブジェクトに変換する処理の所でこう宣言してますが
> 他のページで(heropaさんの掲示板から引用(勝手にすいません。))
> >Private Type tagGUID
> > Data1 As Long
> > Data2 As Integer
> > Data3 As Integer
> > Data4(0 To 7) As Byte
> >End Type
> >udtGUID.Data1 = &H20400
> >udtGUID.Data4(0) = &HC0
> >udtGUID.Data4(7) = &H46
> と宣言が多少なり違うんですがこの違いがよく分かりませんでした。
今までに、 {00020400-0000-0000-C000-000000000046} のような形式で記述された
16進数文字列を見たことはありませんか?
これは、GUID(Global Unique Identifier:グイード/ジーユーアイディー)という
128bitの値をあらわしています。
クラスやインターフェイスには、それぞれ固有のGUID値が割り当てられており、
それらがレジストリに登録されています。
たとえば、「IDispatch インターフェイス」なら
HKEY_CLASSES_ROOT\Interface\{00020400-0000-0000-C000-000000000046}
といった具合です。これを指定したものです。
サンプルによって宣言方法が違っていますが、それは単にVB上の表現の違いです。
APIにとってみれば、128bit(16バイト)の連続した領域に、上記のGUID値が
格納されていればよいため、サイズと値さえ正しければ、どの記述でも間違いではありません。