2009-07-03 9 views
2

J'essaie d'obtenir l'icône du système. en utilisant SHGetFileInfo Je suis le HICON,Convertir HICON pour le long non signé

Je l'ai testé ce HICON avec le code suivant:

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); 
} 

sur l'écran à l'emplacement (300, 200), il me montre icône, Je veux mettre cette icône à l'arborescence, pour cela, j'ai besoin de l'ID de ressource, S'il vous plaît suggérer si quelqu'un sait, Comment convertir cette poignée en unsigned long.

Merci, Praveen Mamdge

+0

quel est le type de IconView? –

Répondre

0

Une poignée est pas un ID de ressource. La plupart des fonctions qui peuvent prendre un fichier et un ID de ressource ont également une version qui prend le HANDLE directement. Ce lien on CodeProject pourrait être ce que vous cherchez.

+0

Merci, Brad Mais le lien que vous avez envoyé traité sur les fichiers de ressources codés en dur, et je veux référencer les icônes du système d'exploitation. Ok, merci encore pour votre guide. –

1

Un identifiant de ressource est un identifiant d'une ressource que vous avez dans votre exécutable. Vous utilisez cet identifiant avec MAKEINTRESOURCE pour les fonctions nécessitant des identifiants de ressources. Comme pour l'arborescence, vous utilisez TreeView_SetImageList, puis chaque élément obtient un index relatif à cette liste.

Vous devez donc créer une liste d'images avec les icônes que vous souhaitez utiliser, passez-la à l'arborescence, puis utilisez l'index approprié pour chaque élément.

Pour créer une manipulation d'un imagelist, vous pouvez utiliser ImageList_Create & ImageList_AddIcon, etc.

Il est sooo 1990. :)

+0

oooppssss ..... Désolé, pour les informations incomplètes, je suis un développeur tiers et de développement pour Adobe InDesign, je ne pense pas que ImageList_Create est nécessaire pour les listes InDesign, Si j'ai utilisé les ressources codées en dur alors ça fonctionne bien, pas besoin pour créer une liste. Je pense, juste le problème est la façon dont la ligne suivante peut être réalisée d'une autre manière, iconView-> SetRsrcID ((unsigned long) info.hIcon); –

+0

Vous êtes dans un monde de douleur. Vous devrez placer l'icône dans une ressource, puis la charger. On dirait que l'API n'accepte pas HICON directement. HICON n'est pas un identifiant de ressource. –

+0

Merci beaucoup Edouard, je pense que c'est la seule option que j'ai, merci encore pour un guide. –

Questions connexes