This shows you the differences between two versions of the page.
c:graphics.h:clearmouseclick [2015/05/06 23:06] |
c:graphics.h:clearmouseclick [2024/02/16 01:05] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== clearmouseclick ===== | ||
+ | |||
+ | |||
+ | ====Syntax of clearmouseclick ==== | ||
+ | <code c> | ||
+ | #include "graphics.h" | ||
+ | void clearmouseclick(int kind); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Description of clearmouseclick ==== | ||
+ | <code c> | ||
+ | The clearmouseclick function is available in the winbgim implementation | ||
+ | of BGI graphics. This is just like getmouseclick, except it does not | ||
+ | provide the x and y coordinates of the event. 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 clearmouseclick 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. | ||
+ | See also | ||
+ | ismouseclick | ||
+ | getmouseclick | ||
+ | Example | ||
+ | /* mouse example */ | ||
+ | #include "graphics.h" | ||
+ | |||
+ | void main(void) | ||
+ | { | ||
+ | const int LIMIT = 10; // Number of clicks to stop program. | ||
+ | int maxx, maxy; // Maximum x and y pixel coordinates | ||
+ | int count = 0; // Number of mouse clicks | ||
+ | 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 " << LIMIT << " times to end."); | ||
+ | setcolor(BLUE); | ||
+ | divisor = 2; | ||
+ | while (count < LIMIT) | ||
+ | { | ||
+ | triangle(maxx/divisor, maxy/divisor); | ||
+ | delay(500); | ||
+ | divisor++; | ||
+ | if (ismouseclick(WM_LBUTTONDOWN)) | ||
+ | { | ||
+ | clearmouseclick(WM_LBUTTONDOWN)); | ||
+ | count++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Switch back to text mode: | ||
+ | closegraph( ); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Example of clearmouseclick ==== | ||
+ | <code c> | ||
+ | /* mouse example */ | ||
+ | #include "graphics.h" | ||
+ | |||
+ | void main(void) | ||
+ | { | ||
+ | const int LIMIT = 10; // Number of clicks to stop program. | ||
+ | int maxx, maxy; // Maximum x and y pixel coordinates | ||
+ | int count = 0; // Number of mouse clicks | ||
+ | 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 " << LIMIT << " times to end."); | ||
+ | setcolor(BLUE); | ||
+ | divisor = 2; | ||
+ | while (count < LIMIT) | ||
+ | { | ||
+ | triangle(maxx/divisor, maxy/divisor); | ||
+ | delay(500); | ||
+ | divisor++; | ||
+ | if (ismouseclick(WM_LBUTTONDOWN)) | ||
+ | { | ||
+ | clearmouseclick(WM_LBUTTONDOWN)); | ||
+ | count++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Switch back to text mode: | ||
+ | closegraph( ); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== See also ==== | ||
+ | [[ismouseclick]] | ||
+ | [[getmouseclick]] | ||
+ | |||
+ | |||
+ | ===== output of clearmouseclick example ===== | ||
+ | |||
+ | no output of example at the moment | ||
+ | do not hesitate and add it... | ||
+ | |||
+ | |||