Установить курсор
На входе: AX = 0004h;
CX = устанавливаемая координата X (по горизонтали);
DX = устанавливаемая координата Y (по вертикали).
На выходе: Регистры не используются.
Обычно курсор мыши устанавливает не программа, а оператор. Однако с помощью функции 04h программа тоже может установить курсор в заданную позицию. Для текстового режима устанавливаемые номера строки и столбца должны быть умножены на 8.
Если программа пытается установить курсор в область, где курсор невидим (эта область задается функцией 10h), то она сможет это сделать. Курсор при этом исчезнет с экрана, что не всегда желательно.
Если при помощи функций 07h или 08h область для перемещения курсора была ограничена, то при попытке установить курсор за границу этой области, он будет установлен в точку, которая находится внутри границы и находится на минимальном расстоянии от точки, заданной при вызове функции.
Функция для установки курсора:
/** *.Name ms_setcr *.Title Установка курсора в заданную точку * *.Descr Эта функция выполняет установку курсора мыши * в точку, заданную координатами X и Y. * *.Proto void ms_setcr(int x, int y) * *.Params int x - горизонтальная координата курсора; * int y - вертикальная координата курсора. * *.Return Ничего * *.Sample ms_samp2.c **/
#include <dos.h> #include <conio.h>
union REGS reg;
void ms_setcr(int x, int y) {
reg.x.ax = 4; reg.x.cx = x; reg.x.dx = y;
int86(0x33,®,®); }
Приведем пример простой программы, которая устанавливает курсор в левый верхний угол экрана:
#include <stdio.h> #include <conio.h> #include "sysp.h"
void main() {
int botm;
// Инициализируем мышь
if(!ms_init(&botm)) { printf("\nМышь не установлена"); exit(-1); }
// Включаем курсор и ожидаем нажатия на клавишу
printf("\n\nКурсор мыши включен, " "для выключения нажмите любую клавишу");
ms_on();
// Устанавливаем курсор в левый верхний угол экрана
ms_setcr(0,0);
getch();
// Выключаем курсор
ms_off(); }