2010-08-24 8 views
0

ok Im en plaçant un curseur dans une boucle, cela fonctionne mais quand je bouge le curseur, il revient juste comme il était. im en utilisant api win32 et moi
SetCursor(LoadCursor(hInstance, MAKEINTRESOURCE(IDC_PROTECTED)));
une idéeC++ positionner un curseur en utilisant SetCursor

Répondre

2

IIRC, vous voulez appeler SetCursor en réponse à WM_SETCURSOR. Si la mémoire est utilisée, le curseur restera également ce que vous avez défini si le membre du curseur de la classe de fenêtre est défini sur NULL.

+0

J'ai essayé ce que vous avez dit mais cela n'a pas fonctionné – Ramilol

+0

Essayé lequel - mettre le curseur de classe à NULL, ou appeler 'SetCursor' en réponse à 'WM_SETCURSOR'? Dans ce dernier cas, vous devez également renvoyer 'TRUE' depuis le gestionnaire de messages. J'ai juste fait une vérification rapide de répondre à 'WM_SETCURSOR' et cela a fonctionné très bien. –

+0

quand j'inscris la fenêtre je l'ai mis à mon curseur mais quand il s'exécute je vois un curseur de verre d'heure que quand je l'ai placé à mon autre curseur cela fonctionne. si je sors le WM_CURSOR le premier curseur fonctionne mais le second ne reste pas – Ramilol

0

Oui. Il est modifié par DefWindowProc().

si vous voulez un autre curseur sur la fenêtre, utilisez SetClassLong(), ou modifier le champ hCursor de WNDCLASS lorsque vous appelez RegisterClass, si vous êtes celui qui appelle, il Youself

+0

Im changer le curseur pas quand le programme démarre quand un événement se produit – Ramilol

+0

@Ramiz: Comment cela contredit-il la suggestion d'appeler SetClassLong()? (En fait, vous voulez 'SetClassLongPtr (GCLP_HCURSOR)' pour compat 64 bits, mais c'est un détail) – MSalters

0

peut être que vous pouvez essayer setcursor dans WM_MOUSEMOVE.

+0

Très mauvaise suggestion en terme d'efficacité (puissance de la batterie du portable, etc). –