[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/07/28(Thu) 18:32
投稿者名:VB初心者
URL :
タイトル:
OLECREATEOICTUREOBJECTについて
はじめまして。
最近VBはじめたものです。
ただ今ツリービューを使ってEXPLORERを作っています。そこでOLECREATEPICTUREINDIRECTの事につい
て知り
たいのですがインターネットや他の掲示板でも調べたんですが詳しい中身の事(構造体や変数の意味
、使う時も
規則)がよく分からないままなのです。ちゃんと覚えて完成させたいのでどなたか
OLECREATEPICTUREINDIRECTの詳しい説明をして頂けないでしょうか?
初書込みなので、書込み方法について誤りがあった場合はすいません。

投稿時間:2005/07/28(Thu) 19:50
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
OleCreatePictureIndirectについて
まず、
hhttp://msdn.microsoft.com/library/en-us/com/htm/ofn_oa2k_9yyc.asp
へ。

まぁ、shellのアイコンを表示するならば、付属のTreeViewコントロール
ではなく、面倒なようでもAPI関数を使って直接TreeViewを生成し、それ
を用いるのが無難ではないかと。

投稿時間:2005/07/29(Fri) 09:20
投稿者名:VB初心者
URL :
タイトル:
Re: OleCreatePictureIndirectについて
K.J.Kさん、花ちゃんさん早速の返信ありがとうございます。
> まぁ、shellのアイコンを表示するならば、付属のTreeViewコントロール
> ではなく、面倒なようでもAPI関数を使って直接TreeViewを生成し、それ
> を用いるのが無難ではないかと。
API関数を使ってツリービューを作る事できるんですか?!まだまだ未熟者ゆえ
知りませんでした。
難しそうですね。。。
>>>>
上記のページはいずれも事前にみておりましたがMSDNに関しましては英語なので
理解が難しくただ今解読中です。みなさん英語読めるんですか?
いちおAPIに関しましては表記方法をそのまま今は覚える事にします。
もう一つ質問なんですが、上記の掲示板の中の(勝手にコピペしてしまってよかったのかな?...)
構造体宣言でここでは
>Private Type CLSIdType
>    id(16) As Byte
>End Type
と宣言して
.
.
>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
と宣言が多少なり違うんですがこの違いがよく分かりませんでした。
またお時間あればご教授願います。

投稿時間:2005/07/29(Fri) 09:57
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re^2: OleCreatePictureIndirectについて
> 上記のページはいずれも事前にみておりましたがMSDNに関しましては英語なので
> 理解が難しくただ今解読中です。みなさん英語読めるんですか?

技術系の英文は、中学卒業程度の文法と若干の語彙があれば問題なく
よめるはずです。文学的表現に富んだものでないのですから。

で、UUIDに関しては、好きな方法で。128bitsの値が参照渡しで
送れればいいのですから、値の配置を意識してあれば、

Type UUID
    Data(0& To 1&) As Currency
End Type

Type UUID
    Data(0& To 3&) As Long
End Type

Type UUID
    Data(0& To 7&) As Integer
End Type

Type UUID
    Data(0& To 15&) As Byte
End Type

のどれでもいけますし、もちろんこれらを組み合わせた形でも
いいでしょう。

Type UUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0& To 7&) As Byte
End Type

の根拠は、元となる型のC言語表記の定義によっています。
文字列表記させることを考えても、これが一番近いかと。

投稿時間: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値が
格納されていればよいため、サイズと値さえ正しければ、どの記述でも間違いではありません。

投稿時間:2005/07/29(Fri) 11:28
投稿者名:VB初心者
URL :
タイトル:
Re^3: OleCreatePictureIndirectについて
K.J.Kさん、魔界の仮面弁士さん速レス本当にありがとうございます。
ピンポイントで知りたかった部分を教えて頂きおかげで理解しがたい部分がすっきりしました。
>Type UUID
>Data1 As Long
>Data2 As Integer
>Data3 As Integer
>Data4(0& To 7&) As Byte
>End Type
無難に構造体宣言はこれからこう書きます。
>今までに、  {00020400-0000-0000-C000-000000000046}  のような形式で記述された
>16進数文字列を見たことはありませんか?
>これは、GUID(Global Unique Identifier:グイード/ジーユーアイディー)という
>128bitの値をあらわしています。
GUIDについて気になったので随分調べたんですがあまり意味わからずじまいでしたが。。
レスの説明で何となくですが分かった気がします。
>udtGUID.Data1 = &H20400
>udtGUID.Data4(0) = &HC0
>udtGUID.Data4(7) = &H46
というのは
>{00020400-0000-0000-C000-000000000046}
の意味だったんですね。これもこういう書き方だと覚えて一見落着します。
本当にありがとうございました!!
また疑問がでてきましたら書き込むやもしれませんがその時はまたご教授願います。

投稿時間:2005/07/28(Thu) 19:59
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: OLECREATEOICTUREOBJECTについて
> たいのですがインターネットや他の掲示板でも調べたんですが詳しい中身の事(構造体や変数の意味
> 、使う時も
> 規則)がよく分からないままなのです。ちゃんと覚えて完成させたいのでどなたか

あれ! ググレばいくらでもでているかと思うのですが?

hhttp://tinyurl.com/9kwx5
1番目とか hhttp://support.microsoft.com/default.aspx?scid=kb;ja;JP161299 とか
hhttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200408_04080055.html とか
関数の説明なら hhttp://tinyurl.com/9rbkv とか......。