Untitled
unknown
plain_text
a month ago
2.2 kB
3
Indexable
#include <dos.h> #include <stdio.h> #include <conio.h> void show_mouse(); void hide_mouse(); void get_mouse_position(int *x, int *y, int *buttons); void update_status(int x, int y, int buttons); int main() { union REGS in, out; int x, y, buttons; // Инициализиране на мишката in.x.ax = 0x0000; int86(0x33, &in, &out); if (out.x.ax == 0) { printf("Mouse driver is not installed.\n"); return 1; } // Показване на курсора на мишката show_mouse(); // Основен цикъл while (!kbhit()) { // Получаване на позицията на мишката и състоянието на бутоните get_mouse_position(&x, &y, &buttons); // Актуализиране на статуса на екрана update_status(x, y, buttons); // Забавяне за намаляване на трептенето delay(100); } // Скриване на курсора на мишката hide_mouse(); return 0; } void show_mouse() { union REGS in; in.x.ax = 0x0001; int86(0x33, &in, &in); } void hide_mouse() { union REGS in; in.x.ax = 0x0002; int86(0x33, &in, &in); } void get_mouse_position(int *x, int *y, int *buttons) { union REGS in, out; in.x.ax = 0x0003; int86(0x33, &in, &out); *x = out.x.cx / 8; // Преобразуване на пиксели в колони *y = out.x.dx / 8; // Преобразуване на пиксели в редове *buttons = out.x.bx; // Състояние на бутоните } void update_status(int x, int y, int buttons) { // Преместване на курсора на екрана на позиция (0, 0) gotoxy(1, 1); // Изчистване на първия ред clreol(); // Извеждане на текущата позиция и състояние на бутоните printf("Position: (%d, %d) Buttons: %s%s%s", x, y, (buttons & 1) ? "Left " : "", (buttons & 2) ? "Right " : "", (buttons & 4) ? "Middle " : ""); }
Editor is loading...
Leave a Comment