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

CreateCursor

Date de parution : 24/12/2001 - Cette fiche API a été lue 1825 fois

Description

CreateCursor crée un nouveau curseur. Son image est composée en utilisant les masques ET et OUX (OU eXclusif) fournis par la fonction. Ces deux masques peuvent être fournis sous forme d?un tableau d?entiers courts. La fonction précise aussi le point d?accroche du curseur, c?est le pixel exact qui est considéré comme localisateur (tel que la pointe du curseur flèche). Le curseur ainsi créé doit être détruit avec DestroyCursor. En cas de succès, la fonction retourne un handle pour l?utilisation du nouveau curseur et 0 en cas d?échec.

Syntaxe

AppelDLL32("user32", "CreateCursor", hInstance, nXhotspot, nYhotspot, nWidth, nHeight, &lpANDbitPlane, &lpXORbitPlane)

hInstance
Handle d?instance de l?application qui appelle la fonction.
nXhotspot
Coordonnée en x du point d?accroche du curseur relatif au coin haut gauche de celui-ci.
nYhotspot
Coordonnée en y du point d?accroche du curseur relatif au coin haut gauche de celui-ci.
nWidth
Largeur en pixel du curseur.
nHeight
Hauteur en pixel du curseur.
lpANDbitPlane
Tableau détenant le masque ET de l?image du curseur.
lpXORbitPlane
Tableau détenant le masque OUX (OU eXclusif) de l?image du curseur.

Compatibilité

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

Remarque

Aucune

Exemple 1

// Création d'un curseur sur 32x32 pixels représentant le symbole yin
// Les masques en bit viennent de la documentation sur les API de Microsoft et ses
// fonctions de curseurs. Le code est à mettre à leur crédit
hnewcurs est un entier long
holdcurs est un entier long
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
retval est un entier long
hInstance est un entier long

hInstance = Instance()

// Chaque séquence de 8 caractères hexa
// représente une ligne du curseur sur 32x32
ETmasque = "FFFC3FFF" + "FFC01FFF" + ...
           "FF003FFF" + "FE00FFFF" + ...
           "F701FFFF" + "F003FFFF" + ...
           "F003FFFF" + "E007FFFF" + ...
           "C007FFFF" + "C00FFFFF" + ...
           "800FFFFF" + "800FFFFF" + ...
           "8007FFFF" + "8007FFFF" + ...
           "0003FFFF" + "0000FFFF" + ...
           "00007FFF" + "00001FFF" + ...
           "00000FFF" + "80000FFF" + ...
           "800007FF" + "800007FF" + ...
           "C00007FF" + "C0000FFF" + ...
           "E0000FFF" + "F0001FFF" + ...
           "F0001FFF" + "F8003FFF" + ...
           "FE007FFF" + "FF00FFFF" + ...
           "FFC3FFFF" + "FFFFFFFF"
// Du code offert par Beaussier en ligne !
OUXmasque = "00000000" + "0003C000" + ...
            "003F0000" + "00FE0000" + ...
            "0EFC0000" + "07F80000" + ...
            "07F80000" + "0FF00000" + ...
            "1FF00000" + "1FE00000" + ...
            "3FE00000" + "3FE00000" + ...
            "3FF00000" + "7FF00000" + ...
            "7FF80000" + "7FFC0000" + ...
            "7FFF0000" + "7FFF8000" + ...
            "7FFFE000" + "3FFFE000" + ...
            "3FC7F000" + "3F83F000" + ...
            "1F83F000" + "1F83E000" + ...
            "0FC7E000" + "07FFC000" + ...
            "07FFC000" + "01FF8000" + ...
            "00FF0000" + "003C0000" + ...
            "00000000" + "00000000"

// 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

// Enfin, création du curseur ! Le point d'accroche est à :
// 19 (pos horiz) et 2 (pos vert) pour le curseur
hnewcurs = AppelDLL32("user32", "CreateCursor", ...
   hInstance, 19, 2, 32, 32, &ETbits[1], &OUXbits[1])

// Place le nouveau curseur à la place de l'ancien pendant 
// 10 secondes et le fait revenir
holdcurs = AppelDLL32("user32", "SetCursor", hnewcurs) 
AppelDLL32("kernel32", "Sleep", 10000)  // attente
retval = AppelDLL32("user32", "SetCursor", holdcurs)

// Destruction du nouveau curseur
retval = AppelDLL32("user32", "DestroyCursor", hnewcurs)


Nombre de commentaire sur CreateCursor : 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..