Changer le curseur de la souris

Résolu
vincent068 Messages postés 12 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 12 février 2007 - 3 févr. 2007 à 18:30
vincent068 Messages postés 12 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 12 février 2007 - 4 févr. 2007 à 13:36
bonjour.

j'ai créé une fonction pour changer le curseur de la souris lorsque je le souhaite :

void

setWaitCursor(HWND hwnd)
{   HCURSOR hCurs_wait;

   hCurs_wait = LoadCursor(NULL, IDC_WAIT); 

   SetClassLong(hwnd,GCL_HCURSOR,(
long) hCurs_wait);}

Cette fonction ne marche que si je l'utilise avant ShowWindow(), après non.
Je ne sais pas quoi faire.
Merci

9 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 févr. 2007 à 23:54
Salut,
Tu peux utiliser la fonction SetCursor(). Elle marche toujours.
SetCursor(LoadCursor(0,IDC_WAIT));
1
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 00:01
SetCursor() me semble sans effet si appelé depuis un thread secondaire.

ciao...
BruNews, MVP VC++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 févr. 2007 à 00:42
BruNews >> Dans ce cas il faudra attacher le thread secondaire au thread principal avec
AttachThreadInput().

0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 01:08
Non aucun besoin, comme d'hab il y a solution simple:
Poster message perso depuis le thread dès son début et le thread primaire appelle SetCursor.
Idem en finissant le thread et le primaire remet l'ancien curseur si besoin.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 févr. 2007 à 01:10
vincent068 >> Je viens de tester:
SetClassLong(hwnd,GCL_HCURSOR,(long) LoadCursor(0,IDC_WAIT));
Ca marche chez moi dans tous les cas, avant ou après ShowWindow(). Il me semble que la cause du problème est ailleurs.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 01:15
C'est certain que ça marche, je l'ai déja employé quand convenait.
Par contre le changement de cursuer ne sera visible que s'il y a mouvement de la souris, ce qu'on peut bien sur simuler par code.

ciao...
BruNews, MVP VC++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 févr. 2007 à 01:20
BruNews >> Ca s'appelle une belle astuce.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 févr. 2007 à 01:27
Je parlais de l'astuce du message perso inter threads.
0
vincent068 Messages postés 12 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 12 février 2007
4 févr. 2007 à 13:36
OK Merci beaucoup.
SetCursor(LoadCursor(0,IDC_WAIT)) marche bien chez moi.

Par contre pour le setClassLong(), je ne comprend pas ce qui l'empêche de fonctionner, d'autant plus que je l'ai aussi testé dans d'autre programmes et la fonction marchait.
0
Rejoignez-nous