[BCB/delphi] modifier la position de la souris

modifier la position de la souris [BCB/delphi] - Programmation

Marsh Posté le 21-08-2002 à 09:05:16    

voila, je cherche " a faire bouger la souris toute seule", et j'ai essayé par  
 
Mouse->CursorPos.x = 0;  
Mouse->CursorPos.y = 0;  
 
mais c marche pas  :D
 
quelle voie dois-je empruner pour arriver a mes fins ?

Reply

Marsh Posté le 21-08-2002 à 09:05:16   

Reply

Marsh Posté le 21-08-2002 à 09:10:03    

Essaye: SendInput
 
C une fonction de l'API windows.


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 09:15:43    

En BC 16 et 32 bits, j'avais écrit un module pour mettre le curseur de souris juste au centre d'un objet (souvent au milieu d'un bouton pour ne plus avoir qu'à cliquer dessus). Faudrait voir pour le transcrire en C++.
 
void PlaceCursSourisSurCentreObjet(HWND hDlgC, int Controle)
{ // Place le curseur de la souris au centre de l'objet Controle
     RECT    rcP;
     // coordonnées Ecran de l'objet Controle
     GetWindowRect(GetDlgItem(hDlgC, Controle), &rcP);
     ShowCursor(FALSE);  // cache pour pas le voir bouger
     // déplace en face du milieu du bouton (coordonnées Ecran)
     SetCursorPos((rcP.left + rcP.right) / 2, (rcP.top + rcP.bottom) / 2);
     ShowCursor(TRUE);   // le montre au bon endroit
}
// fin de module PlaceCursSourisSurCentreObjet
 
Si ça peut servir ...

Reply

Marsh Posté le 21-08-2002 à 09:27:41    

arf, ca fait bouger la souris, mis en fait je sais aps commetn mettre les bonnes coordonnées, en relatif sur le form
 
 
en fait la ca doit me mettre le curseur au milieu d'un bouton
 
SetCursorPos(TBQuestion3_1->Top+TBQuestion3_1->Height/2,TBQuestion3_1->Left+TBQuestion3_1->Width/2);
 
 
masi ca marche mal ;), ca le met u peu n'importe ou en fonction de l'emplacement de mon dialogue sur l'écran


Message édité par farib le 21-08-2002 à 09:28:47
Reply

Marsh Posté le 21-08-2002 à 10:09:35    

Faut se méfier des coordonnées Client (de la feuille qu'on a "designé" ) et de l'Ecran. Y a des fonctions qui ont besoin des unes ou des autres.
 
On passe de l'un à l'autre par ClientToScreen et ScreenToClient (on transforme qu'un POINT => deux appels si on veut x1,y1 ET x2,y2).
 
NB : quand on bouge logiciellement le curseur de souris, si on bouge aussi la souris, ça "fait bizarre"....

Reply

Marsh Posté le 21-08-2002 à 10:13:15    

carbon_14 a écrit a écrit :

 
NB : quand on bouge logiciellement le curseur de souris, si on bouge aussi la souris, ça "fait bizarre"....




 
 :??: Bouger physiquement la souris? Elle a pas des petites pattes pour se déplacer tu sais? :D


Message édité par LetoII le 21-08-2002 à 10:15:40

---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 10:37:24    

comment déplace au niveau fenetre, client ?
 
en gros quand je bouge ma souris sur un bouton "non", ca me la déplace autamatiquement sur "oui"   (c kool hein ? :D)

Reply

Marsh Posté le 21-08-2002 à 10:39:30    

farib a écrit a écrit :

comment déplace au niveau fenetre, client ?
 
en gros quand je bouge ma souris sur un bouton "non", ca me la déplace autamatiquement sur "oui"   (c kool hein ? :D)




 
tu prend les coordonée de ton bouton dans ta fenêtre et tu les passe en coordonnée écran et là tu bouge le curseur sur ces coordonnées


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 10:41:38    

oui, masi la j'ai un peu de mal, je suis aps top avec l'api windows.... je fais comment ?

Reply

Marsh Posté le 21-08-2002 à 10:47:44    

Avec BCB:
 

Code :
  1. TPoint point( targetButon->Left + targetButon->Width/2,
  2.               targetButon->Top  + targetButon->Height/2);
  3. TPoint target = ClientToScreen(point);
  4. SetCursorPos(target.x,target.y);


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 10:47:44   

Reply

Marsh Posté le 21-08-2002 à 10:52:59    

:lol: :lol: :lol:
 
 
finalement j'ai réussi et j'ai écris, sans lire ce que tu as fait
 
 

Code :
  1. TPoint Bidule(TBQuestion3_1->Left+TBQuestion3_1->Width/2,TBQuestion3_1->Top+TBQuestion3_1->Height/2);
  2. Bidule = ClientToScreen(Bidule);
  3. SetCursorPos(Bidule.x,Bidule.y);


 
 
on a des cerveaux semblables ! :d

Reply

Marsh Posté le 21-08-2002 à 10:54:17    

farib a écrit a écrit :

:lol: :lol: :lol:
 
 
finalement j'ai réussi et j'ai écris, sans lire ce que tu as fait
 
 

Code :
  1. TPoint Bidule(TBQuestion3_1->Left+TBQuestion3_1->Width/2,TBQuestion3_1->Top+TBQuestion3_1->Height/2);
  2. Bidule = ClientToScreen(Bidule);
  3. SetCursorPos(Bidule.x,Bidule.y);


 
 
on a des cerveaux semblables ! :d




 
 :o Ho hé ça va les insultes! Nan, j'déconne :D


Message édité par LetoII le 21-08-2002 à 10:54:34

---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 10:59:51    

letoII a écrit a écrit :

 
 
 :o Ho hé ça va les insultes! Nan, j'déconne :D




 
c t plutot une flatterie :D :D
 
un honneur pour toi :lol: :lol:

Reply

Marsh Posté le 21-08-2002 à 11:09:35    

farib a écrit a écrit :

 
 
c t plutot une flatterie :D :D
 
un honneur pour toi :lol: :lol:




 
 :lol:


---------------
Le Tyran
Reply

Marsh Posté le 21-08-2002 à 12:46:14    

Si vous vous chamailez à comparer la taille de vos cerveaux, et leur Win_APIsation, sa souris va se sauver horrifiée (surtout si elle est sans fil !) :lol:

Reply

Marsh Posté le 21-08-2002 à 14:20:26    

carbon_14 a écrit a écrit :

Si vous vous chamailez à comparer la taille de vos cerveaux, et leur Win_APIsation, sa souris va se sauver horrifiée (surtout si elle est sans fil !) :lol:




 
 :lol:


---------------
Le Tyran
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed