Curseur invisible avec SetCursor(NULL)

Signaler
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour,

J'ai cherché sur la MSDN, puis sur le net pour cacher le curseur, et les deux me disent : SetCursor(NULL);
J'ai essayé au début de mon main, mais mon curseur est toujours visible. J'ai alors fait quelques tests pour essayer de comprendre d'où venait le problème, notamment en faisant :

SetCursor(NULL);
if (GetCursor() == NULL)
   printf ("NULL");
else
   printf("Autre");

Et ceci m'affiche bien "NULL", pourtant le curseur est visible.

Quelqu'un y comprend quelque chose ?

L'ouverture de l'esprit n'est pas une fracture du crâne

9 réponses

Messages postés
123
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2009
1
Oui, c'est une FAQ Win32 api
voir sur le newsgroup pro des apis Win32 :
news://194.177.96.26/fr.comp.os.ms-windows.programmation
où ça a maintes fois été discuté, même en 16-bits en 1992...
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
L'ouverture de l'esprit n'est pas une fracture du crâne
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
jeffy131 >> Si tu ne connais pas la réponse ou tu ne comprends pas le problème évoqué, ce n'est pas la peine de balancer des liens inutiles.
Leucistic >> Cela dépend de ce que tu veux faire exactement.
- SetCursor() et ShowCursor() ne fonctionnent qu'avec les fenêtres.
- Pour cacher le curseur du système, y compris celui des fenêtres et consoles, tu peux utiliser SetSystemCursor() en passant le handle d'un curseur transparent comme premier paramètre.
- Tu peux mettre le curseur de la souris en bas à droite de l'écran et l'empêcher de se déplacer en faisant comme ceci:
    int largeur=GetSystemMetrics(SM_CXSCREEN);
    int hauteur=GetSystemMetrics(SM_CYSCREEN);
    SetCursorPos(largeur,hauteur);
    RECT rect;
    SetRect(&rect,largeur,hauteur,largeur,hauteur);
    ClipCursor(&rect);
 et pour le libérer tu fais:
    ClipCursor(0);
- Pour cacher le curseur seulement dans la console, je ne sais pas.
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
Merci racpp !!!
Je pensais avoir mal cherché dans les news, mais apparemment non.

J'arrive a faire fonctionner le code qui met le curseur en bas à droite, mais ca ne correspond pas à mes attentes. Je m'explique : Je dispose d'une dalle tactile, l'utilisation de la souris est donc supprimée. En revanche, en touchant l'écran qui engendrera un simple clic, je souhaite ne pas voir le curseur. Or, avec la solution du curseur en bas à droite, il ne semble pas être capable de sélectionner quelque chose.

C'est donc la fonction SetSystemCursor mais je n'arrive pas à comprendre les paramètres à lui envoyer...
J'ai bien compris qu'il fallait le handle du curseur et par quoi le remplacer, j'ai donc essayer :
SetSystemCursor(NULL, NULL);
SetSystemCursor(GetCursor(), NULL);
Mais sans succès !

L'ouverture de l'esprit n'est pas une fracture du crâne
Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015

// cache mouse cursor
    ShowCursor(false);

// voir mouse cursor

    ShowCursor(true);

ou si tu est un peut fou tu prend un dessinateur tu dessine un cursor avec la couleur invisible et tu le load comme cursor (:
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
nanonavich >> Il est en mode console. Comme je l'ai précisé plus haut, ShowCursor() ne fonctionne qu'avec les fenêtres. Il veut cacher le curseur système.
Leucistic >> SetSystemCursor() requiert comme premier paramètre le handle d'un curseur. Ce dernier peut être soit créé par programmation soit récupéré comme ressource de l'exécutable. Je vais faire un petit exemple et le poster comme code source.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je viens de déposer le code source. Le zip contient un curseur transparent.
CACHER LES CURSEURS SYSTEME
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
16 juin 2012
1
Euh ...
C'est normal si il me dit que le code source est désactivé ?
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
C'est bizarre car aucun admin ne l'a désactivé. Je viens de le réactiver tu peux donc le consulter.