Changer le curseur de la souris [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
12 février 2007
-
vincent068
Messages postés
12
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
12 février 2007
-
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

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Salut,
Tu peux utiliser la fonction SetCursor(). Elle marche toujours.
SetCursor(LoadCursor(0,IDC_WAIT));
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
SetCursor() me semble sans effet si appelé depuis un thread secondaire.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
BruNews >> Dans ce cas il faudra attacher le thread secondaire au thread principal avec
AttachThreadInput().

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
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.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
BruNews >> Ca s'appelle une belle astuce.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Je parlais de l'astuce du message perso inter threads.
Messages postés
12
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
12 février 2007

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.