Аппаратное обеспечение IBM PC

       

Установить курсор


На входе: 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,&reg,&reg); }

Приведем пример простой программы, которая устанавливает курсор в левый верхний угол экрана:

#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(); }



Содержание раздела