コマンドボタンにアイコンを表示


KENT  2009-09-09 01:09:33  No: 142515  IP: 192.*.*.*

コマンドボタンにEXEのアイコンを表示させたいのですが方法が分かりません。SHGetFileInfo()関数を使いアイコンの取得までは分かるのですが、コマンドボタンのPictureに表示する方法が分かりません。
VB6を使用しています。

編集 削除
subaru  2009-09-09 16:59:10  No: 142516  IP: 192.*.*.*

OleCreatePictureIndirect を使うと
アイコンハンドルからVB6のPictureオブジェクトに変換できます。

編集 削除
KENT  2009-09-09 23:18:00  No: 142517  IP: 192.*.*.*

subaruさん、ありがとうございます。OleCreatePictureIndirectについて自分なりに調べてみたのですが、難しすぎて理解できません。何か参考になるサイトなりありませんでしょうか?

編集 削除
subaru  2009-09-10 14:16:44  No: 142518  IP: 192.*.*.*

グーグル先生に聞いて最初に出てきたページですが参考になりますか?
http://support.microsoft.com/kb/161299/ja

上記ページの CreateBitmapPicture 関数ではビットマップの変換なので、
OleCreatePictureIndirect の第1引数に渡す
PICTDESC 構造体をアイコン用に修正してください。

こんな感じで定義しておけばいいと思います。

Type PICTDESC
    cbSizeofstruct As Long
    picType As Long
    hicon As OLE_HANDLE
    reserved1 As Long
    reserved2 As Long
End Type

編集 削除
魔界の仮面弁士  2009-09-10 15:25:24  No: 142519  IP: 192.*.*.*

検索例として。

http://www.google.co.jp/codesearch?hl=ja&lr=&q=OleCreatePictureIndirect+icon+lang%3Abasic

編集 削除