API Meilleure résolution Optimisé pour |
Membre de Click-FR®, Réseau francophone Paie-Par-Click CreateCursorDate 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
Compatibilité
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)
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. |