delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/10/05/02:43:33

From: "Damian Yerrick" <web DOT poison AT pineight DOT 8m DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: How to Trap Double Mouse Click.
Date: Mon, 4 Oct 1999 22:50:53 -0500
Organization: Rose-Hulman Institute of Technology
Lines: 64
Message-ID: <7tbsn0$nmf$1@solomon.cs.rose-hulman.edu>
References: <7tbjhr$vl0$1 AT nnrp1 DOT deja DOT com>
NNTP-Posting-Host: yerricde.laptop.rose-hulman.edu
X-Trace: solomon.cs.rose-hulman.edu 939095584 24271 137.112.205.146 (5 Oct 1999 03:53:04 GMT)
X-Complaints-To: news AT cs DOT rose-hulman DOT edu
NNTP-Posting-Date: 5 Oct 1999 03:53:04 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

<hank_heng AT my-deja DOT com> wrote in message news:7tbjhr$vl0$1 AT nnrp1 DOT deja DOT com...
> Hello,
>   Can anyone tell me how to trap a double mouse click, left or right,
> and maby middle.

In general, the middle button is used to scroll the window;
the user should be able to drag the view by holding the
middle button and moving the mouse.

>   Oh, I'm using DJGPP, please help.

I assume you're also using Allegro as your mouse and video
library. If you are, the mouse buttons are stored in mouse_b

You should already have called
install_mouse() and install_timer()

This code hasn't been tested; it's still open for input.


>8

enum
{
  BUTTON_1_MASK = 1, /* usually the left button */
  BUTTON_2_MASK = 2, /* usually the right button */
  BUTTON_CENTER_MASK = 4 /* not available on all mice */
};

#define DOUBLE_CLICK_TIME 27 /* times 1/70 second */

static int leftState, rightState, midState;
static int leftTime, rightTime, midTime;

int buttons, x;
buttons = mouse_b;
if((buttons & BUTTON_1_MASK) != leftState)
{
  leftState = buttons & BUTTON_1_MASK;
  if(leftState = 1)
  {
    if((retrace_count - leftTime) < DOUBLE_CLICK_TIME)
    {
      HandleDoubleClick();
    }
    else
    {
      HandleSingleClick();
    }
  }
  leftTime = retrace_count;
}

>8


This code senses a double click message when the mouse button is pressed
after having been released for less than one-third second.

Damian Yerrick
http://come.to/yerrick


- Raw text -


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