[C] Recupération de la position du curseur.

Recupération de la position du curseur. [C] - C - Programmation

Marsh Posté le 05-01-2008 à 17:44:13    

Bonjour
 
J aimerais savoir si il existe en C une fonction permettant de récupérer dans des variables les indices de positions X et Y qui définissent la position du curseur sur l'écran?
 
D'avance merci  :hello:  
 
Edit : Pour info je compile avec Borland

Message cité 1 fois
Message édité par seba1492 le 05-01-2008 à 17:45:32
Reply

Marsh Posté le 05-01-2008 à 17:44:13   

Reply

Marsh Posté le 05-01-2008 à 18:09:40    

Pas en standard non.

Reply

Marsh Posté le 05-01-2008 à 18:24:42    

seba1492 a écrit :

J aimerais savoir si il existe en C une fonction permettant de récupérer dans des variables les indices de positions X et Y qui définissent la position du curseur sur l'écran?
 


Rien de standard.

Citation :

Edit : Pour info je compile avec Borland


Quelle IDE de Borland ?
 
Si tu as accès à conio, tu as wherex() et wherey() déclarées dans <conio.h>


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-01-2008 à 14:43:45    

Ayant conio je vais essayer cela  
 
MErci  :)

Reply

Marsh Posté le 11-01-2008 à 16:30:03    

Sinon la fonction Win32 pour récupérer la position du curseur est GetCursorPos
http://msdn2.microsoft.com/en-us/l [...] S.85).aspx


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 11-01-2008 à 17:23:17    

Sous windows, il faut effectivement utiliser l'API GetCursorPos() ou bien les paramètres qui sont fournis dans la boucle des messages pour WM_MOUSEMOVE, WM_LBUTTONDOWN, etc.
 
Pour un programme sous DOS, voici ce que j'avais fait, qui marche bien :

/* ===================================================================== */
// char prg_name[]    = "MOUSE. Oct-01-1993.";
// char prg_purpose[] = "Gestion de souris";
/* ===================================================================== */
 
#include <stdio.h>
#include <conio.h>
#include <dos.h>
 
#define INIT_MOUSE  0x0000
#define SHOW_MOUSE  0x0001
#define HIDE_MOUSE  0x0002
#define WATCH_MOUSE 0x0003
#define POSIT_MOUSE 0x0004
#define ASK_MOUSE   0x0005
 
char f_mouse_exist;
char f_mouse_hidden;
 
/* -------- public functions ------- */
void init_mouse(void);
void end_mouse(void);
void show_mouse(void);
void hide_mouse(void);
int ask_mouse(int *mx, int *my);
int watch_mouse(int *mx, int *my);
 
/* -------- external functions ------- */
 
/* -------- procedure division ------- */
void hide_mouse(void)
{
 union REGS regs;
 
 if (f_mouse_exist == 'N' || f_mouse_hidden == 'Y')
    return;
 regs.x.ax = HIDE_MOUSE;
 int86(0x33, &regs, &regs);
 f_mouse_hidden = 'Y';
 return;
}
 
void show_mouse(void)
{
 union REGS regs;
 
 if (f_mouse_exist == 'N' || f_mouse_hidden == 'N')
    return;
 regs.x.ax = SHOW_MOUSE;
 int86(0x33, &regs, &regs);
 f_mouse_hidden = 'N';
 return;
}
 
int ask_mouse(int *mx, int *my)
{
 union REGS regs;
 
 int mouse_click_nb;
 regs.x.ax = ASK_MOUSE;
 regs.x.bx = 0;  /* left button */
 int86(0x33, &regs, &regs);
 mouse_click_nb = regs.x.bx;
 *mx = regs.x.cx;
 *my = regs.x.dx;
 return mouse_click_nb;
}
 
int watch_mouse(int *mx, int *my)
{
 union REGS regs;
 
 int mouse_button;
 regs.x.ax = WATCH_MOUSE;
 regs.x.bx = 0;
 int86(0x33, &regs, &regs);
 mouse_button = regs.x.bx & 0x0001;
 *mx = regs.x.cx;
 *my = regs.x.dx;
 return mouse_button;
}
 
void init_mouse(void)
{
 union REGS regs;
 
 f_mouse_exist = 'N';
 f_mouse_hidden = 'Y';
 regs.x.ax = INIT_MOUSE;
 if (int86(0x33, &regs, &regs) == 0)
    return;
 f_mouse_exist = 'Y';
 show_mouse();
 regs.x.ax = POSIT_MOUSE;
 regs.x.cx = 0;
 regs.x.dx = 0;
 int86(0x33, &regs, &regs);
 return;
}
 
void end_mouse(void)
{
 hide_mouse();
 return;
}

Reply

Marsh Posté le 11-01-2008 à 17:30:44    

olivthill a écrit :

Sous windows, il faut effectivement utiliser l'API GetCursorPos() ou bien les paramètres qui sont fournis dans la boucle des messages pour WM_MOUSEMOVE, WM_LBUTTONDOWN, etc.

 

Pour un programme sous DOS, voici ce que j'avais fait, qui marche bien :


Dans la même veine :

 

http://delahaye.emmanuel.free.fr/c [...] rc/mouse.c

 



Message édité par Emmanuel Delahaye le 11-01-2008 à 17:32:07

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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