Файл: C Стандартные библиотечные функции работы с графикой.rtf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 185

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


text_just - Параметр горизонтального и вертикального выравнивания для функции settextjustify().
Таблица 12. Значения параметра text_just.

Аргумент

Константа

Значение

Результат

Horiz

LEFT_TEXT CENTER_TEXT RIGHT_TEXT

0 1 2

По левому краю По центру По правому краю

Vert

BOTTOM_TEXT CENTER_TEXT TOP_TEXT

0 1 2

По низу По центру По верху


text directions - Настройки текста. Содержит два параметра HORIZ_DIR и VERT_DIR.

textsettingstype - Используется для получения текущих настроек текста функцией gettextsettings().
struct textsettingstype

{

int font;

int direction;

int charsize;

int horiz;

int vert;

}
USER_CHAR_SIZE - Определённый пользователем размер символа. В таблице 13 указаны значения данного параметра, а так же размеры шрифтов, соответствующие заданному параметру.

Таблица 13.

Значение

Размер дисплея 8x8 растровых шрифтов

1

Символы дисплея в 8x8 экранных блоков

2

Символы дисплея в 16x16 экранных блоков

...

...

10

Символы дисплея в 80x80 экранных блоков


Используется функциями gettextsettings(), settextstyle(), setusercharsize() и параметром textsettingstype.

VERT_DIR - Данный параметр устанавливает направление графического вывода шрифта (Имя параметра: VERT_DIR; Значение: 1; Направление: Снизу в верх, поворачивает выводимый текст на 90 градусов против часовой стрелки). Данный параметр используется функциями gettextsettings
(), settextstyle(), setusercharsize().

viewporttype - Используется для получения настроек области вывода функцией getviewsettings().
struct viewporttype

{

int left;

int top;

int right;

int bottom;

int clip;

}



2. Реализация пользовательской библиотеки “mouse.h



В стандартной комплектации BorlandC2.0, BorlandC3.1 или любой версии компилятора C++ от любой другой корпорации, будь то MicroSoft, AT&T и т.д. нет ни одного модуля работы с мышью как-то в обычном или графическом режиме. Я имею в виду приложения под ОС MS-DOS. Конечно, написание такого модуля сводится не только к знаниям языка C++, но и так называемого языка низкоуровневого программирования Assembler’а.

Итак, приступим. Для начала мы должны определить основные функции, типы и константы.
Таблица 1. Константы.

Константа

Значение

Описание

MB_NONE

0

Кнопки мыши не нажаты

MB_LEFT

1

Нажата левая кнопка мыши

MB_RIGHT

2

Нажата правая кнопка мыши

MB_LAR

3

Нажаты обе кнопки мыши

MB_MIDDLE

4

Нажата средняя кнопка мыши


Уточнение: константа MB_MIDDLE работает только с системными мышами и мышами от компании Logitech.

Типы, которые мы будем использовать в нашем модуле:
struct tPoint

{

int x;

int y;

};
struct tMouseState

{

tPoint loc;

int but;

};
Структура tPoint определяет координаты курсора.

Структура tMouseState определяет позицию курсора и состояние кнопок мыши, т.е. нажата ли какая либо кнопка на мышке и если да то какая.

Теперь опишем основные функции, которые используются у нас в модуле.


Функция ResetMouse() “убивает” мышь.

Функция ShowMouse() отображает курсор мыши на мониторе.

Функция HideMouse() скрывает курсор мыши.

Функция GetMouseState() типа tMouseState возвращает параметры мыши.

Функция MoveMouseCursor( int x, int y) перемещает курсор на заданную позицию.

Функция SetMouseVert( int max, int min) устанавливает вертикальные пределы для мыши. Например, если мышь до этой функции двигалась по всему монитору, т.е. от позиции (0, 0) до (640, 480), то после этой функции она будет двигаться только в установленном пространстве, т.е. от позиции (0, min) до (640, max).

Функция SetMouseHorz( int max, int min) устанавливает горизонтальные пределы для мыши. Данная функция полностью аналогична предыдущей. Мышь будет двигаться в пределах от (min, 0) до (max, 480).

Данные функции работают как в графическом, так и в обычном режимах. Если поместить этот модуль в папку где находятся основные модули с расширением *.h, то его можно подключать как “#include <mouse.h>”, иначе его подключение будет выглядеть как “#include “<путь>mouse.h””.

Думаю что этих функция вполне достаточно для работы с мышью. Листинг модуля представлен в приложении 1.



Заключение



В данной курсовой работе мной был рассмотрен стандартный модуль для работы с графикой на языке C++ “graphics.h”. А также разработан собственный модуль для работы с мышкой в графическом и обычном режимах. Данный модуль является интеллектуальной собственностью. Его дальнейшее изменение без согласия разработчика невозможно. Хотя дополнение модуля другими функциями и классами без изменения исходного кода функций и типов возможно и приветствуется разработчиком. Программный код модуля может свободно распространятся и бесплатен.

Данная работа может использоваться в учебных целях, а на основе кода модуля могут осуществляться различные разработки дополнительных функций для работы с мышью.



Приложение 1




Листинг модуля “mouse.h
#include

#include

#include

#include

#include
const

MB_NONE = 0,

MB_LEFT = 1,

MB_RIGHT = 2,

MB_LAR = 3,

MB_MIDDLE= 4;
struct tPoint{

int x;

int y;

};
struct tMouseState{

tPoint loc;

int but;

};
extern "C" void ResetMouse();

extern "C" void ShowMouse();

extern "C" void HideMouse();

extern "C" struct tMouseState GetMouseState( void);

extern "C" void MoveMouseCursor( int x, int y);

extern "C" void SetMouseVert( int max, int min);

extern "C" void SetMouseHorz( int max, int min);
void ResetMouse()

{

asm{

xor ax, ax

int 33h

}

}
void ShowMouse()

{

asm{

mov ax, 1

int 33h

}

}
void HideMouse()

{

asm{

mov ax, 2

int 33h

}

}
struct tMouseState GetMouseState( void)

{

struct REGPACK reg;

struct tMouseState state;

reg.r_ax=3;

intr(0x33, &reg);

state.loc.x=reg.r_cx;

state.loc.y=reg.r_dx;

state.but=reg.r_bx;

return(state);

}
void MoveMouseCursor( int x, int y)

{

asm{

mov ax, 4

mov cx, x

mov dx, y

int 33h

}

}
void SetMouseVert( int max, int min)

{

asm{

mov ax, 8

mov cx, min

mov dx, max

int 33h

}

}

void SetMouseHorz( int max, int min)

{

asm{

mov ax, 7

mov cx, min

mov dx, max

int 33h

}

}



Список используемой литературы



1. Галерея «ПЕТРОПОЛЬ». Неформальное введение в C++ и TURBO VISION. 1992г.

2. М.И. Болски. Язык программирования Си. 1988г.

3. Юров В.И. Assembler. Учебник для вузов. 2-е издание. - СПб.: Питер, 2004г.