User Tools

Site Tools


c:graphics.h:getmouseclick

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

c:graphics.h:getmouseclick [2024/02/16 01:05] (current)
Line 1: Line 1:
 +===== getmouseclick =====
 +
 +
 +====Syntax of getmouseclick ==== 
 + <code c>
 +#include "graphics.h"
 +voud getmouseclick(int kind, int&amp; x, int&amp; y);
 +  </code>
 +
 +
 +==== Description of getmouseclick ==== 
 +<code c>
 +The getmouseclick function is available in the winbgim implementation of
 +BGI graphics. This function sets x and y to the pixel coordinates of an
 +unprocessed event of the specified kind. If there is no such event, then
 +the function sets both x and y to -1. The value of the argument kind may
 +be any of the constants listed above. After calling getmouseclick, for a
 +particular kind of event, the ismouseclick will return false for that
 +kind of event until another such event occurs.
 +The kind argument to getmouseclick is one of these constants from the
 +graphics.h file:
 +  WM_MOUSEMOVE
 +if you want to detect a mouse movement
 +  WM_LBUTTONDBLCLK
 +...detect when the left mouse button is double clicked
 +  WM_LBUTTONDOWN
 +...detect when the left mouse button is clicked down
 +  WM_LBUTTONUP
 +...detect when the left mouse button is released up
 +  WM_MBUTTONDBLCLK
 +...detect when the middle mouse button is double clicked
 +  WM_MBUTTONDOWN
 +...detect when the middle mouse button is clicked down
 +  WM_MBUTTONUP
 +...detect when the middle mouse button is released up
 +  WM_RBUTTONDBLCLK
 +...detect when the right mouse button is double clicked
 +  WM_RBUTTONDOWN
 +...detect when the right mouse button is clicked down
 +  WM_RBUTTONUP
 +...detect when the right mouse button is released up
 +The middle mouse button handlers aren't working on my machine. I haven't
 +yet tracked down the reason--it could be a broken mouse or it could be a
 +bug in my programming.
 +Note: Normally, getmouseclick returns the coordinates of the most recent
 +event of the requested kind. If you want mouse clicks of a particular
 +kind to be queued for processing, then call setmousequeuestatus.
 +  See also
 +clearmouseclick
 +ismouseclick
 +setmousequeuestatus
 +  Example
 +/* mouse example */
 +#include "graphics.h"
 +
 +void main(void)
 +{
 +    int maxx, maxy;  // Maximum x and y pixel coordinates
 +    int x, y;  // Coordinates of the mouse click
 +    int divisor;     // Divisor for the length of a triangle side
 +
 +    // Put the machine into graphics mode and get the maximum
 +coordinates:
 +    initwindow(450, 300);
 +    maxx = getmaxx( );
 +    maxy = getmaxy( );
 +
 +    // Draw a white circle with red inside and a radius of 50 pixels:
 +    setfillstyle(SOLID_FILL, RED);
 +    setcolor(WHITE);
 +    fillellipse(maxx/2, maxy/2, 50, 50);
 +
 +    // Print a message and wait for a red pixel to be double clicked:
 +    settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
 +    outtextxy(20, 20, "Left click in to end.");
 +    setcolor(BLUE);
 +    divisor = 2;
 +    while (!ismouseclick(WM_LBUTTONDOWN))
 +    {
 +  triangle(maxx/divisor, maxy/divisor);
 +  delay(500);
 +  divisor++;
 +    }
 +
 +    getmouseclick(WM_LBUTTONDOWN, x, y);
 +    cout << "The mouse was clicked at: ";
 +    cout << "x=" << x;
 +    cout << " y=" << y << endl;
 +
 +    // Switch back to text mode:
 +    closegraph( );
 +}
 +
 +
 +
 +
 +==== Example of getmouseclick ====
 +<code c>
 +/* mouse example */
 +#include "graphics.h"
 +
 +void main(void)
 +{
 +    int maxx, maxy;  // Maximum x and y pixel coordinates
 +    int x, y;  // Coordinates of the mouse click
 +    int divisor;     // Divisor for the length of a triangle side
 +
 +    // Put the machine into graphics mode and get the maximum
 +coordinates:
 +    initwindow(450, 300);
 +    maxx = getmaxx( );
 +    maxy = getmaxy( );
 +
 +    // Draw a white circle with red inside and a radius of 50 pixels:
 +    setfillstyle(SOLID_FILL, RED);
 +    setcolor(WHITE);
 +    fillellipse(maxx/2, maxy/2, 50, 50);
 +
 +    // Print a message and wait for a red pixel to be double clicked:
 +    settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
 +    outtextxy(20, 20, "Left click in to end.");
 +    setcolor(BLUE);
 +    divisor = 2;
 +    while (!ismouseclick(WM_LBUTTONDOWN))
 +    {
 +  triangle(maxx/divisor, maxy/divisor);
 +  delay(500);
 +  divisor++;
 +    }
 +
 +    getmouseclick(WM_LBUTTONDOWN, x, y);
 +    cout << "The mouse was clicked at: ";
 +    cout << "x=" << x;
 +    cout << " y=" << y << endl;
 +
 +    // Switch back to text mode:
 +    closegraph( );
 +}
 +</code>
 +
 +
 +==== See also ====
 +[[clearmouseclick]]
 +[[ismouseclick]]
 +[[setmousequeuestatus]]
 +
 +
 +===== output of getmouseclick example ===== 
 +
 +    no output of example at the moment
 +    do not hesitate and add it...  
 +
 +
  

on the occasion of the current invasion of Russia in Ukraine

Russian Stop this War
c/graphics.h/getmouseclick.txt · Last modified: 2024/02/16 01:05 (external edit)

Impressum Datenschutz