SHGetFileInfo で取得したアイコン画像をPictureプロパティへ関連付けるには?

解決


マロン  2005-06-25 16:58:58  No: 90704  IP: [192.*.*.*]

お世話になります。
さて早速質問なのですが、SHGetFileInfo で取得したファイルのアイコンを Picture1 に描画させた後に、

    Picture2.Picture = Picture1.Picture

のようなことをやりたいのですが、これを可能にするまでの手続きはどのようにすればよいのでしょうか?
ちなみに、SHGetFileInfo を使ってのアイコン取得は、下記のように行っています。

    Dim lngTargetInfomation   As Long
    Dim utdShellFileInfo      As SHFILEINFOA
    Dim lngRC                 As Long
    Dim strFileName           As string

    strFileName = "d:\test.txt"

    lngTargetInfomation = SHGFI_ICON Or SHGFI_SMALLICON
    lngRC = SHGetFileInfo(strFileName, _
                          0, _
                          utdShellFileInfo, _
                          Len(utdShellFileInfo), _
                          lngTargetInfomation)
    With Picture1
        .Cls
        lngRC = DrawIcon(.hdc, 0, 0, utdShellFileInfo.hIcon)
    End With

編集 削除
犬ひろし  2005-06-25 19:34:27  No: 90705  IP: [192.*.*.*]

Picture1.AuteSize=True

にしといて
アイコン描画(DrawIcon)
そしてDrawIcon
そのあと

Picture2.PaintPicture Picture1.Image, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
'サイズ指定はテキトーです妥当な引数を指定してください
みたいだったっけかな

あとBitBltでもできます。

編集 削除
マロン  2005-06-25 21:15:02  No: 90706  IP: [192.*.*.*]

アドバイスありがとうございます。
早速

     RC = DrawIcon(.hdc, 0, 0, utdShellFileInfo.hIcon)
     Picture1.AuteSize=True
     Picture2.PaintPicture Picture1.Image, 0, 0,Picture1.ScaleWidth, Picture1.ScaleHeight

を実行してみたのですが、残念なことに Picture2 にはアイコンが描画されませんでした。
何がおかしかったのでしょうか。

編集 削除
犬ひろし  2005-06-25 21:28:56  No: 90707  IP: [192.*.*.*]

これでは?

     Picture1.AuteSize=True
     Picture1.AuteRedraw=True
     Picture2.AuteSize=True
     Picture2.AuteRedraw=True
     RC = DrawIcon(Picture1.hdc, 0, 0, utdShellFileInfo.hIcon)
     Picture2.PaintPicture Picture1.Image, 0, 0,Picture1.ScaleWidth, Picture1.ScaleHeight

編集 削除
pict  2005-06-25 22:37:40  No: 90708  IP: [192.*.*.*]

AutoRedraw = True にして、
DrawIcon()等で描画後、
Picture1.Picture = Picture1.Image
そして、
Picture2.Picture = Picture1.Picture
では?

編集 削除
マロン  2005-06-26 08:23:45  No: 90709  IP: [192.*.*.*]

犬ひろしさん、pictさんありがとうございました。
うまく Picture2 に描画させることができました!!

編集 削除