Programme à icone perso - API Windows

Résolu
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006 - 19 juil. 2005 à 15:02
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006 - 22 juil. 2005 à 13:30
expliquez moi tout please

je veux changer l'icône visible sur le programme dans la navigation dans les dossiers

mais surtout la petite icone en haut à gauche de la fenêtre du programme .


<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++

36 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
21 juil. 2005 à 16:46
Désolé, j'avais pas vu les liens avant.

Je viens de tester et ca marche chez moi après quelques modifications dans le code.

Voici les deux lignes à corriger:



wincl.hIcon = LoadIcon (hThisInstance, "IDI_ICON");

wincl.hIconSm = LoadIcon (hThisInstance, "IDI_ICON");



Si tu veux utiliser MAKEINTRESOURCE, tu dois commencer le fichier .rc par #include "ressource.h"

Personnellement, je préfère la premiere solution.

Je suppose que tu n'as pas oublié d'ajouter le fichier .rc à ton projet.

Ca doit marcher maintenant. Bonne chance.
3
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
21 juil. 2005 à 22:49
oh génial ! enfin j'ai réussi !



alors j'ai laissé LoadIcon (NULL, IDI_APPLICATION); sans y toucher .



et j'ai fait



#include "h.h" (h.h est mon fichier h , je sais c'est un nom débile !)

dans WM_CREATE :

HICON icone= LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON));

SendMessage(hWnd,WM_SETICON,ICON_BIG,(LPARAM) icone);

dans h.h : tout simplement

#define IDI_ICON 100

dans rc.rc :

#include "h.h"

IDI_ICON ICON "Internet Explorer.ico"



enfin un truc qui marche !!



ciao ! +++

et merci beaucoup



<hr size ="2" width="100%">Dorian / 14 ans / sous Dev-C++
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
19 juil. 2005 à 15:31
SendMessage :

HWND : hWnd;

Msg : WM_SETICON;

WPARAM : ICON_BIG;

LPARAM : (LPARAM)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));


void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
19 juil. 2005 à 15:34
Mais bon

Dans l'explorateur, c'est surtout grâce à l'icône par défaut dans les ressources...

void Aurevoir( void ); //Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
19 juil. 2005 à 18:15
râââ ! ça marche pour la grosse icône dans le dossier mais j'ai beau à
mettre SMALL à la place de BIG ça ne changera pas la p'tite icone au
haut à gauche de la fenêtre ...



sinon quand on fait alt+tab là la grosse icone du programme c'est par
défaut (sans changement) . tu vois d'où je parle ? comment on fait pour
là changer là ? (simple curiosité)

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 10:15
y doit bien y'a avoir un moyen ... tout les programmes on leurs icones perso !

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 juil. 2005 à 12:07
Essai avec SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON)));
void Aurevoir( void ); //Bonne journée
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 juil. 2005 à 15:33
Salut,

Il faut d'abord s'assurer que l'icone est bien chargée avant d'essayer
de la mettre sur la barre de titre de la fenêtre. Voici comment
procéder:

HICON icone=LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_ICON));

if (!icone) MessageBox(0,"Icone Non Chargée!",0,0);

SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icone);

La valeur de retour de LoadIcon doit être non nulle. J'ai mis
GetModuleHandle(0) comme premier paramètre de LoadIcon pour que le
HINSTANCE soit correct. LoadIcon refuse de fonctionner
correctement quand le premier paramètre est mal initialisé (hInstance).

Voila, je pense que ça devrait marcher comme ça.
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 16:14
Avec

SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)IDI_ICON);

j'obtiens ça : IMAGE



SetClassLong(hWnd,GCL_HICON,(LONG)LoadIcon(NULL,MAKEINTRESOURCE(IDI_ICON)));

ne change rien .



j'ai essayé de toucher à

wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

et de mettre

wincl.hIcon = LoadIcon (NULL, MAKEINTRESOURCE(IDI_ICON));

ça ne change rien non plus



après je fais pareil avec wincl.hIconSm

et là à la place de l'îcone j'ai ...



CODE fichier cpp

CODE fichier h : #define IDI_ICON 101

CODE fichier rc : IDI_ICON ICON "LunaXP Settings - Control Panel.ico"

ICONE ici
<hr size ="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 16:19
ah mince j'ai sauté une ligne en lisant et HICON icone=LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_ICON)); j'l'ai pas pris en compte , donc..



l'icone n'est pas chargée finalement ...



HICON icone=LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON));

if (!icone) MessageBox(0,"Icone Non Chargée!",0,0);

SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)icone);



ça va plus là ...

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 juil. 2005 à 16:21
Fait un #define IDI_ICON -1 pour voir

void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 juil. 2005 à 16:22
Ta mis le bon chemin de ton icône ???????? :s
void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 16:26
qu'est ce que tu veux dire par "

Fait un #define IDI_ICON -1"

et non je n'avait pas mis le chemin de l'icone juste le nom + extension
puisque c'est dans le même dossier ... mais même avec ça marche pas ...

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 juil. 2005 à 16:32
Bé logiquement un IDI_ICON -1 ça signifie que c'est par
défaut ( si j'dis pas de connerie lol ) mais bon, apparemment c'est un
souci de chargement... et ça provient du fait que DevC++ et les
ressources, c'est po facile...

Vire le des ressources et essai de le charger directement depuis le dossier

void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 16:34
" Vire le des ressources et essai de le charger directement depuis le dossier"

soit plus précis quand tu parle please



erf

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 juil. 2005 à 16:40
bé au lieu de faire un MAKEINTRESOURCE(IDI_ICON) tu fais un LoadIcon( hInst, "Icone.ico");



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/icons/iconreference/iconfunctions/loadicon.asp

void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 16:46
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(hInst,"LunaXP Settings - Control Panel.ico"));

ça compile mais ne change rien !!!!!


je pense qu'il faut remonter à la source , comment on fait exactement pour inclure dans les ressources une icone .

après seulement faudra voir .

<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 juil. 2005 à 17:13
Il faut écrire:

HICON icone=LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_ICON));

Tu peux remplacer GetModuleHandle() par hInst si celui-ci est correctement initialisé (non nul)

Tu peux le vérifier en ajoutant le test suivant:

if (!hInst) MessageBox (0,"hInst non initialisé!",0,0):
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
20 juil. 2005 à 20:51
fichier h :

#define
IDI_ICON
100



fichier rc :

IDI_ICON
ICON
"LunaXP Settings - Control Panel.ico"

ou

IDI_ICON
ICON
"C:\Documents and Settings\Dorian\Mes documents\Dorian\C++\API
Windows\icone perso\LunaXP Settings - Control Panel.ico"




est ce que c'est bon ça déja ?



après j'ai mis #include "ressource.h" dans le ficher cpp


<hr size="2" width="100%">Dorian / 14 ans / sous Dev-C++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
21 juil. 2005 à 09:10
Oui ça me semble bon.

As-tu mis GetModuleHandle(0) comme premier paramètre de LoadIcon ?

Sinon, as-tu vérifié que hIsnt est bien initialisé?

Je pense que c'est de là que vient ton problème.
0
Rejoignez-nous