2009-07-03 9 views
2

システムからアイコンを取得しようとしています。私はこのアイコンを設定したい場所で、画面上のHICONを符号なしロングに変換する

SHFILEINFO info; //For getting information about the file 
if (::SHGetFileInfo(ucPath.GrabTString(), 0,&info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SHELLICONSIZE) != NULL) 
{ 
//Control view of the 
    if (iconView != NULL){ 
     HDC hDC = GetDC(NULL); //Get the screen DC 
    DrawIconEx(hDC, 300, 200, info.hIcon, 0, 0, 0, NULL, DI_NORMAL); //Draw icon on 300, 200 location 
    ReleaseDC(NULL, hDC); 
    //following line is not working 
    iconView->SetRsrcID((unsigned long) info.hIcon); 
    } 
    ::DestroyIcon(info.hIcon); 
} 

(300、200)それは私のアイコンを示し、 :SHGetFileInfoを使用して、私は次のコードでこのHICONをテストしHICON、

を得ましたツリービューには、リソースIDが必要です。 このハンドルをunsigned longに変換する方法を知っていればお勧めします。

おかげで、 PraveenさんMamdge

+0

アイコンビューの種類は何ですか? –

答えて

0

HANDLEは、リソースIDではありません。ファイルとリソースIDを取ることができるほとんどの機能には、HANDLEを直接実行するバージョンがあります。

このリンクon CodeProjectはあなたが探しているものかもしれません。

+0

ありがとう、Brad あなたが送信したリンクは、ハードコードされたリソースファイルで処理され、OSからアイコンを参照したいと思います。 [OK]を再度あなたのガイドラインをありがとう。 –

1

リソースIDは、実行可能ファイル内にあるリソースの識別子です。リソース識別子が必要な機能の場合は、MAKEINTRESOURCEでこの識別子を使用します。

TreeViewでは、TreeView_SetImageListを使用し、各アイテムはこのリストを基準にしたインデックスを取得します。

したがって、使用するアイコンを含むイメージリストを作成し、ツリービューに渡して、各アイテムに適切なインデックスを使用する必要があります。

イメージリストを操作作成するには、それがすっごく1990 :)だなど

、ImageList_Create & ImageList_AddIconを使用することができます

+0

oooppssss ..... 申し訳ありませんが、不完全な情報については、私はサードパーティの開発者であり、Adobe InDesignを開発しています.InDesignのリストにImageList_Createが必要だと思いませんか?ハードコードされたリソースを使用すると、リストを作成します。 私は、ちょうど問題は、次の行が他の方法でどうやって取得できるかということです。 iconView-> SetRsrcID((unsigned long)info.hIcon); –

+0

あなたは苦痛の世界にいます。アイコンをリソースに入れてからロードする必要があります。 APIがHICONを直接受け入れないように見えます。 HICONはリソースIDではありません。 –

+0

ありがとうEdouard、私はこれが唯一の選択肢だと思う、ガイドラインのおかげで再び。 –

関連する問題