delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2003/07/04/12:15:32

Message-ID: <00dc01c34246$d07e7c00$0105a8c0@luiz>
From: "Luiz Rafael Culik Guimaraes" <culikr AT uol DOT com DOT br>
To: <djgpp AT delorie DOT com>
Subject: Knowing if an mouse event occur
Date: Fri, 4 Jul 2003 13:10:38 -0300
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
X-MIME-Autoconverted: from 8bit to quoted-printable by ginsberg.uol.com.br id NAA02158
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id h64GBSh16217
Reply-To: djgpp AT delorie DOT com

Dear Friends

Does any one has an function to know is an mouse event has occur. becouse if
i put my mouse rotine on an if( !kbhit())
     i dont get the proper  mouse event

my handle is defines as bellow


void mouseint(_go32_dpmi_registers *r)
{
   s_iButtons = r->x.bx;
   s_iInitCol = r->x.cx/8;
   s_iInitRow = r->x.dx/8;
//   printf("estou nio instala?Æo dohandler do mouse\n ");
//   fprintf(stdout, "bu %d col %d row %d\n", s_iButtons , s_iInitCol
,s_iInitRow);
//   printf( "bu %d col %d row %d\n", s_iButtons , s_iInitCol ,s_iInitRow);
}

int SetMouseEventHandler(unsigned int EventMask, void (*func)(__dpmi_regs
*))
{
   __dpmi_regs r;
/*      LOCK_VARIABLE(s_iInitCol);
      LOCK_VARIABLE(s_iInitRow);
      LOCK_VARIABLE(s_iButtons);
      LOCK_FUNCTION(mouseint);*/

 callback_info.pm_offset=(int)func; /* Obtain the offset of the handler */
/*   callback_info.pm_selector=_my_cs(); Obtain the segment of the handler
*/

 /* The mouse driver expects a real-mode function, so I need to wrap
  * my protected-mode handler function with a real-mode stub. */

if(_go32_dpmi_allocate_real_mode_callback_retf(&callback_info,&callback_regs
))
      return -1;
//   fprintf(stdout," passei instala?Æo dohandler do mouse\n ");
   r.x.ax = SET_EVENT_HANDLER; /* Call function 0Ch */
   r.x.cx = 127;         /* The mask that holds the events...  */

 /* The previous function filled the 'rm_offset' and rm_segment' fields
  * of callback_info. All I need to do is pass them to the ISR. */
 r.x.dx = callback_info.rm_offset;
 r.x.es = callback_info.rm_segment;

 __dpmi_int(MOUSE_INT,&r);           /* Install callback */
   return(r.x.flags & 1) ? -1 : 0;
}

Regards
Luiz

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019