Related Articles

Related Articles

Use cases of mouse programming in C/C++ | Set 2
  • Difficulty Level : Expert
  • Last Updated : 29 Dec, 2020

In this article, we will discuss some use cases of Mouse Programming:

Restrict mouse pointer:

The mouse pointer can be restricted in particular rectangle. The idea is to create a function called restrictmouse() which takes four parameters which containing X coordinate and Y coordinate. First point mention the top of the rectangle and the second point mention the bottom of the rectangle. Below are the functions used for the same:

  • initmouse(): use to initialize mouse.
  • showmouse(): shows the mouse pointer on the output screen.
  • restrictmouse(): used to set Horizontal and vertical limit of the mouse pointer by setting the following parameters. AX = 7 for horizontal and AX = 8 for vertical.

Below is the program for the same:

C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to restrict the mouse
// pointer
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to restrict the mouse
// pointers
void restrictMouse(int x1, int y1,
                   int x2, int y2)
{
    // Set Horizontal limit
    in.x.ax = 7;
    in.x.cx = x1;
    in.x.dx = x2;
    int86(0X33, &in, &out);
  
    // Set Vertical limit
    in.x.ax = 8;
    in.x.cx = y1;
    in.x.dx = y2;
    int86(0X33, &in, &out);
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    // Get the status of the mouse
    status = initMouse();
  
    // Check if mouse is available or not
    if (status == 0)
        printf("Mouse support "
               "not available.\n");
    else {
        showMouse();
  
        // Draw rectangle for displaying
        // the boundary
        rectangle(100, 70, 400, 200);
        restrictMouse(100, 70, 400, 200);
    }
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

chevron_right


C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to restrict the mouse
// pointer
#include <bits/stdc++.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
using namespace std;
  
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to restrict the mouse
// pointers
void restrictMouse(int x1, int y1,
                   int x2, int y2)
{
    // Set Horizontal limit
    in.x.ax = 7;
    in.x.cx = x1;
    in.x.dx = x2;
    int86(0X33, &in, &out);
  
    // Set Vertical limit
    in.x.ax = 8;
    in.x.cx = y1;
    in.x.dx = y2;
    int86(0X33, &in, &out);
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    // Get the status of the mouse
    status = initMouse();
  
    // Check if mouse is available or not
    if (status == 0)
        cout << "Mouse support "
             << "not available.\n";
    else {
        showMouse();
  
        // Draw rectangle for displaying
        // the boundary
        rectangle(100, 70, 400, 200);
        restrictMouse(100, 70, 400, 200);
    }
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

chevron_right


Output:



Free hand drawing:

This following program makes use of some sub function, which were already discussed previously, and shows how they can be used to write useful programs like free-hand drawing. Below are the functions used:

  • initmouse(): use to initialize mouse.
  • showmouse(): shows mouse pointer on the output screen.
  • hidemouse(): used to hide mouse while drawing.
  • getmouseposition(): Fetches current location of the pointer and draw line accordingly.

Below is the program for the same:

C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to perform Free Hand Drawing
// using mouse programming
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to hide the mouse
// pointer using graphics
void hideMouse()
{
    // Set AX=2 to hide mouse
    in.x.ax = 2;
    int86(0X33, &in, &out);
}
  
// Function to get the exact position
// of the mouse
getMousePosition(int* x, int* y,
                 int* click)
{
    in.x.ax = 3;
  
    // Get the coordinates
    int86(0x33, &in, &out);
  
    // Update the coordinates
    *x = out.x.cx;
    *y = out.x.dx;
    *click = out.x.bx & 1;
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    initMouse();
  
    // kbhit If a key has been pressed
    // then it returns a non zero value
    // otherwise returns zero(false)
    while (!kbhit()) {
  
        // Show the mouse pointer
        showMouse();
  
        // Get the mouse position
        getMousePosition(&x1, &y1, &click);
        x2 = x1;
        y2 = y1;
  
        // When mouse is clicked
        while (click == 1) {
            hideMouse();
  
            // Draw line
            line(x1, y1, x2, y2);
            x1 = x2;
            y1 = y2;
  
            // Get the mouse position
            getMousePosition(&x2, &y2, &click);
        }
    }
  
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

chevron_right


C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to perform Free Hand
// Drawing using mouse programming
#include <bits/stdc++.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
using namespace std;
  
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to hide the mouse
// pointer using graphics
void hideMouse()
{
    // Set AX=2 to hide mouse
    in.x.ax = 2;
    int86(0X33, &in, &out);
}
  
// Function to get the exact position
// of the mouse
getMousePosition(int* x, int* y,
                 int* click)
{
    in.x.ax = 3;
  
    // Get the coordinates
    int86(0x33, &in, &out);
  
    // Update the coordinates
    *x = out.x.cx;
    *y = out.x.dx;
    *click = out.x.bx & 1;
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    initMouse();
  
    // kbhit If a key has been pressed
    // then it returns a non zero value
    // otherwise returns zero(false)
    while (!kbhit()) {
  
        // Show the mouse pointer
        showMouse();
  
        // Get the mouse position
        getMousePosition(&x1, &y1, &click);
        x2 = x1;
        y2 = y1;
  
        // When mouse is clicked
        while (click == 1) {
            hideMouse();
  
            // Draw line
            line(x1, y1, x2, y2);
            x1 = x2;
            y1 = y2;
  
            // Get the mouse position
            getMousePosition(&x2, &y2, &click);
        }
    }
  
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

chevron_right


Output:


Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :