S'identifier

API
Documentation
Ressources
Trucs & astuces
Libre
Gabarits
Services

Membres
Participer
Visiter

Contact

Meilleure résolution
mode 800 x 600

Optimisé pour
IE v.5
Netscape v.6
mais surtout pour
Mozilla v.1
minimum

 


Membre de Click-FR®, Réseau francophone Paie-Par-Click

CreateIcon

Date de parution : 24/11/2002 - Cette fiche API a été lue 1355 fois

Description

CreateIcon crée une icône qui a la taille, les couleurs et le motif désirés. Si la fonction réussit, la valeur de retour est le handle de l’icône sinon la valeur est à zéro (appeler GetLastError pour un code erreur étendu.

Syntaxe

AppelDLL32("user32", "CreateIcon", hInstance, nWidth, nHeight, nPlanes, nBitsPixel, &lpANDbits, &lpXORbits)

hInstance

[e] Identifie l’instance du module créant l’icône.

nWidth

[e] Spécifie la largeur en pixel de l’icône.

nHeight

[e] Spécifie la hauteur en pixel de l’icône.

cPlanes

[e] Spécifie le nombre de plans dans le masque OUX (OU eXclusif).

cBitsPixel

[e] Spécifie le nombre de bits par pixel dans le masque OUX.

lpbANDbits

[e] Pointe sur un tableau d’entiers courts qui contient les valeurs du masque ET.

lpbXORbits

[e] Pointe sur un tableau d’entiers courts qui contient les valeurs du masque OUX.

Compatibilité

  • Windows 95 : supporté
  • Windows 98 : supporté
  • Windows NT : demande Windows NT 3.1 ou plus
  • Windows 2000 : supporté

Remarque

Aucune

Exemple 1

// Création d'une icône représentant le symbole yang
// Les masques en bit viennent de la documentation sur les API 
// de Microsoft et ses fonctions d'icône
// Le code est à mettre à leur crédit
hIcon est un entier long
hWnd est un entier long
WM_SETICON est un entier = 0x80
Etmasque, OUXmasque sont des chaînes
ETbits  est un tableau de 128 entiers courts
OUXbits est un tableau de 128 entiers courts
hexa est une chaîne
c est un entier
dec est un entier court
hInstance est un entier long
retval est un entier long

hInstance = Instance()
hWnd = Handle()

// Chargement des masques bitmaps
ETmasque = "FFFFFFFF" + ...  // ligne 1 
           "FFFFC3FF" + ...  // ligne 2 
           "FFFF00FF" + ...  // ligne 3  
           "FFFE007F" + ...  // ligne 4  
           "FFFC001F" + ...  // ligne 5  
           "FFF8000F" + ...  // ligne 6  
           "FFF8000F" + ...  // ligne 7  
           "FFF00007" + ...  // ligne 8 
           "FFF00003" + ...  // ligne 9 
           "FFE00003" + ...  // ligne 10 
           "FFE00001" + ...  // ligne 11 
           "FFE00001" + ...  // ligne 12 
           "FFF00001" + ...  // ligne 13  
           "FFF00000" + ...  // ligne 14  
           "FFF80000" + ...  // ligne 15  
           "FFFC0000" + ...  // ligne 16  
           "FFFF0000" + ...  // ligne 17  
           "FFFF8000" + ...  // ligne 18  
           "FFFFE000" + ...  // ligne 19  
           "FFFFE001" + ...  // ligne 20  
           "FFFFF001" + ...  // ligne 21  
           "FFFFF001" + ...  // ligne 22  
           "FFFFF003" + ...  // ligne 23  
           "FFFFE003" + ...  // ligne 24  
           "FFFFE007" + ...  // ligne 25  
           "FFFFC00F" + ...  // ligne 26  
           "FFFFC00F" + ...  // ligne 27  
           "FFFF801F" + ...  // ligne 28  
           "FFFF007F" + ...  // ligne 29  
           "FFFC00FF" + ...  // ligne 30  
           "FFF803FF" + ...  // ligne 31  
           "FFFC3FFF"        // ligne 32  
// Du code offert par Beaussier en ligne !
OUXmasque = "00000000" + ... // ligne 1 
            "00000000" + ... // ligne 2
            "00000000" + ... // ligne 3
            "00000000" + ... // ligne 4
            "00000000" + ... // ligne 5
            "00000000" + ... // ligne 6
            "00000000" + ... // ligne 7
            "00003800" + ... // ligne 8
            "00007C00" + ... // ligne 9
            "00007C00" + ... // ligne 10
            "00007C00" + ... // ligne 11
            "00003800" + ... // ligne 12
            "00000000" + ... // ligne 13
            "00000000" + ... // ligne 14
            "00000000" + ... // ligne 15
            "00000000" + ... // ligne 16
            "00000000" + ... // ligne 17
            "00000000" + ... // ligne 18
            "00000000" + ... // ligne 19
            "00000000" + ... // ligne 20
            "00000000" + ... // ligne 21
            "00000000" + ... // ligne 22
            "00000000" + ... // ligne 23
            "00000000" + ... // ligne 24
            "00000000" + ... // ligne 25
            "00000000" + ... // ligne 26
            "00000000" + ... // ligne 27
            "00000000" + ... // ligne 28
            "00000000" + ... // ligne 29
            "00000000" + ... // ligne 30
            "00000000" + ... // ligne 31
            "00000000"       // ligne 32
// Maintenant, on utilise une boucle pour convertir l'hexa en 
// décimal et on charge ces valeurs dans chaque tableau
// C'est ennuyeux mais il n'y a aucun autre moyen
// Windev ne fournissant pas de moyen idéal de mettre toutes 
// ces informations dans un tableau :o(
Pour c = 1 à 128
  hexa = Milieu(ETmasque, c*2-1, 2)
  Selon (Gauche(hexa,1))
   Cas "A": dec = 10
   Cas "B": dec = 11
   Cas "C": dec = 12
   Cas "D": dec = 13
   Cas "E": dec = 14
   Cas "F": dec = 15
   Autre Cas: dec = Val(Gauche(hexa,1))
  Fin
  dec = dec*15+dec
  Selon (Droite(hexa,1))
   Cas "A": dec += 10
   Cas "B": dec += 11
   Cas "C": dec += 12
   Cas "D": dec += 13
   Cas "E": dec += 14
   Cas "F": dec += 15
   Autre Cas: dec += Val(Droite(hexa,1))
  Fin
  ETbits[c] = dec
  
  hexa = Milieu(OUXmasque, c*2-1, 2)
  Selon (Gauche(hexa,1))
   Cas "A": dec = 10
   Cas "B": dec = 11
   Cas "C": dec = 12
   Cas "D": dec = 13
   Cas "E": dec = 14
   Cas "F": dec = 15
   Autre Cas: dec = Val(Gauche(hexa,1))
  Fin
  dec = dec*15+dec
  Selon (Droite(hexa,1))
   Cas "A": dec += 10
   Cas "B": dec += 11
   Cas "C": dec += 12
   Cas "D": dec += 13
   Cas "E": dec += 14
   Cas "F": dec += 15
   Autre Cas: dec += Val(Droite(hexa,1))
  Fin
  OUXbits[c] = dec
Fin
  
hIcon = AppelDLL32("user32", "CreateIcon", ...
   hInstance, 32, 32, 1, 1, &ETbits[1], &OUXbits[1])
Si hIcon Alors
   // Changement de l'icône 16x16 pour la fenêtre
   SendMessage(hWnd, WM_SETICON, 0, hIcon) 
   // et en 32x32 pour le contrôle Alt+Tab
   SendMessage(hWnd, WM_SETICON, 1, hIcon) 
Sinon
    Erreur("Aucune icône chargée")
Fin


Nombre de commentaire sur CreateIcon : 0

Rappel : Le code fourni est compatible Windev v.4 et 5. Pour les versions supérieures, vous devez modifier le type des variables numériques. Par exemple : entier long devient entier.
Bien sûr, les marques citées sont déposées par leurs sociétés respectives. Ces pages sont à la disposition de tous, le code fourni est libre mais toute responsabilité est déclinée en cas de mauvais usage ou de dysfonctionnement.
© 2000-2005 Beaussier & Le Centre W..D..