Curseur invisible avec SetCursor(NULL)

Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 7 oct. 2008 à 09:04
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 9 oct. 2008 à 19:18
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

jeffy131 Messages postés 123 Date d'inscription samedi 14 juillet 2007 Statut Membre Dernière intervention 29 mars 2009 1
7 oct. 2008 à 11:20
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...
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
7 oct. 2008 à 20:00
L'ouverture de l'esprit n'est pas une fracture du crâne
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 oct. 2008 à 23:02
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.
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
8 oct. 2008 à 10:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nanonavich Messages postés 54 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 15 août 2015
9 oct. 2008 à 01:05
// 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 (:
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 oct. 2008 à 01:58
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.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 oct. 2008 à 02:35
Je viens de déposer le code source. Le zip contient un curseur transparent.
CACHER LES CURSEURS SYSTEME
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
9 oct. 2008 à 08:48
Euh ...
C'est normal si il me dit que le code source est désactivé ?
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 oct. 2008 à 19:18
C'est bizarre car aucun admin ne l'a désactivé. Je viens de le réactiver tu peux donc le consulter.
0
Rejoignez-nous