[C++] Changer l'icône de son application

Changer l'icône de son application [C++] - Programmation

Marsh Posté le 04-08-2001 à 14:08:01    

Comment changer l'icône mise par défaut lorsque l'on crée un application Win32 (une petite fenêtre), par une icône de son choix ?

Reply

Marsh Posté le 04-08-2001 à 14:08:01   

Reply

Marsh Posté le 05-08-2001 à 19:07:51    

Une fois ton icône créée, il faut enregistrer ladite icône dans la structure qui représente la classe de ton appli, il y a un champs dédié mais je ne me rappelle pas son nom.

Reply

Marsh Posté le 06-08-2001 à 08:51:54    

En C, il y a une (voire plus) ressource(s) dans le fichier .RC.
 
BOOL InitApplication(HANDLE hInstance)    /* current instance  */
{
    WNDCLASS  wc;
 
//Fill in window class structure with parameters that describe the main window.                                                          */
.....
    wc.hIcon = LoadIcon(wc.hInstance, "IDI_APPICON0" );
 
    /* Register the window class and return success/failure code.            */
    return RegisterClass(&wc);
}
 
C'est l'icône par défaut. Dans propriétés\raccourci (click droit sur raccourci du programme), on peut changer l'icône avec une autre de celles contenues dans le fichier de ressources, voire ailleurs.
 
En C++, ça doit ressembler ?

Reply

Marsh Posté le 06-08-2001 à 09:13:57    

J'ai mis ce code mais ça ne marche pas !
 
WNDCLASS wc;
 
wc.hIcon = LoadIcon(hInstance,"D:\\ico\\LAYOUT.ico" );
RegisterClass(&wc);

Reply

Marsh Posté le 06-08-2001 à 09:33:47    

antsite a écrit a écrit :

J'ai mis ce code mais ça ne marche pas !
 
WNDCLASS wc;
 
wc.hIcon = LoadIcon(hInstance,"D:\\ico\\LAYOUT.ico" );
RegisterClass(&wc);  




 
Il faut mettre l'icone dans le projet c-à-d dans le fichier de ressources du projet. Donnez un emplacement sur le DD ne marche pas, il me semble.


---------------
- "Qui diable es-tu ?"
Reply

Marsh Posté le 06-08-2001 à 10:06:09    

Une variable du fichier RC "donne" le nom du fichier ICONE.
S'il y a une adresse absolue, si elle est liée à l'EXE, comment trouvera-t-il l'icône sur D:\\...\... du PC utilisateur ? L'éditeur de ressources doit le refuser a priori.
 
Il faut faire une copie de l'icône ou des icônes dans le répertoire où se trouve le projet, mais pas indiquer un chemin absolu.
 
dans mon fichier RC, j'ai 5 icônes pour mon application
IDI_APPICON0 ICON MOULINET.ICO
IDI_APPICON1 ICON MOULINEU.ICO
IDI_APPICON2 ICON MOULINEV.ICO
IDI_APPICON3 ICON MOULINEW.ICO
IDI_APPICON4 ICON MOULINEW.ICO
c'est la première qui a été choisie par défaut, mais les autres sont disponibles dans l'EXE.

Reply

Marsh Posté le 06-08-2001 à 10:12:46    

La solution la + simple:
 
tu crées 2 images en bmp pour ton icone, en 32*32*8 et en 16*16*8..
 
Ensuite ds tes ressources tu fais insert/bmp tes 2 images.
 
Tu sélectionne tte l´image 32*32, ctrl-C, tu vas sur ton icone en 32*32, ctrl-V.
Pareil en 16*16..
 
Et tu détruit tes 2 bmps des ressources.. Voilà.. :)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 06-08-2001 à 15:31:41    

Le problème c que je connais pas très bien le C++ et que j'ai créé un application Win32 sans assistand et donc pas de fichier .rc... Qqn peut-il m'expliquer en 3 mots comment en créer un ?

Reply

Marsh Posté le 07-08-2001 à 18:08:39    

J'ai mis ça et ça ne marche toujours pas, mon .exe a toujours l'icône de base.
 
WNDCLASS wc;
wc.hIcon = LoadIcon(hInstance,IDI_EXCLAMATION);
RegisterClass(&wc);

Reply

Marsh Posté le 08-08-2001 à 09:09:55    

Si l'application a un menu, il doit y avoir un fichier .RC (caché qq part ?  :) ).
 
Le IDI_EXCLAMATION, il est défini où ? C'est une ressource d'icône ?
Il faut dessiner (ou trouver) un dessin/une icône qq part. L'éditeur de ressources contient un dessinateur d'icônes (du moins sous Borland).
 
Entre guillemets le IDI_EXCLAMATION, ça irait pas mieux ?

Reply

Marsh Posté le 08-08-2001 à 09:09:55   

Reply

Marsh Posté le 08-08-2001 à 10:24:17    

IDI_EXCLAMATION est déjà défini dans VC++
Ca compile sans pb. Mon application n'as pas de menu (ni de fenêtre d'ailleurs). Elle se content d'éxécuter du code sans
rendu graphique. Je souhaite juste changer l'icône de l'éxécutable.

Reply

Marsh Posté le 08-08-2001 à 13:40:34    

Je viens d'essayer avec un de mes prog sous BC 5.02. Si j'utilise IDI_EXCLAMATION (avec ou sans guillemets), j'ai toujours l'icône par défaut, celle que j'ai dessinée... Bizarre..
 
J'ai oté la ligne contenant le nom de l'icone dans le fichier .RC.
 
J'ai regardé l'aide. Ils disent qu'il faut mettre hInstance à NULL si on utilise l'un des IDI_XXXX de Windows. J'ai fait, c'est pas bon : pas d'icône dans l'EXE !!
 
 
Si une icône est déja disponible, il faudrait la copier dans le répertoire où est/sont les fichiers .C(PP), créer un fichier toto.rc (à ajouter aux fichiers du projet (add node en BC5)), ce fichier comprenant les deux lignes
 
#include <windows.h>
 
IDI_APPICON ICON LAYOUT.ICO
 
 
et dans le fichier C(PP)
 
BOOL InitApplication(HANDLE hInstance)    /* current instance  */
{
    WNDCLASS  wc;
 
    wc.style = ...;  
    wc.lpfnWndProc = (WNDPROC)SpectroProc; (pour moi)
    wc.cbClsExtra = 0;    
    wc.cbWndExtra = 0;  
    wc.hInstance = hInstance;  
    wc.hIcon = LoadIcon(wc.hInstance, "IDI_APPICON" );
ou
    wc.hIcon = LoadIcon(wc.hInstance, MAKEINTRESOURCE(IDI_APPICON));
 
.....
    return RegisterClass(&wc);
}
 
 :??:

Reply

Marsh Posté le 09-08-2001 à 14:38:06    

Génial ça marche ! Merci d'avoir été patient !
a+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed