Leucistic
Messages postés61Date d'inscriptionmercredi 24 septembre 2008StatutMembreDernière intervention16 juin 2012
-
7 oct. 2008 à 09:04
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 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
jeffy131
Messages postés123Date d'inscriptionsamedi 14 juillet 2007StatutMembreDernière intervention29 mars 20091 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...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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.
Leucistic
Messages postés61Date d'inscriptionmercredi 24 septembre 2008StatutMembreDernière intervention16 juin 20121 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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.