Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика и программирование
Просмотров
1345
Размер файла
42 б
Поделиться

Ознакомительный фрагмент работы:

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

Волжский Университет им. В.Н. Татищева

Факультет Информатики и Телекоммуникаций

Курсовая работа

Дисциплина: Системное программное обеспечение

Тема:

«C++: Стандартные библиотечные функции работы с графикой»

Тольятти 200г.


Содержание

Введение

1. Анализ графического модуля “graphics.h”

1.1 Анализ функции модуля

1.2 Анализ констант, типов и глобальных переменных модуля

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

Заключение

Приложение 1

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

Введение

Тема данной курсовой работы стандартные библиотечные функции работы с графикой в C++. В данном работе я постараюсь раскрыть основные моменты работы функций стандартного модуля C++, который можно подключить к любому проекту написанном на языке Си, с помощью заголовочного файла graphics.h. Конечно, кроме данного модуля в современных средах разработки программных приложений на данном языке есть и такие не менее интересные модули как glu32.lib и glaux.lib, подключаемые к проектам с помощью заголовочных файлов gl.h, glu.h, glaux.h. Они позволяют программисту показать всю красоту приложения, а также могут использоваться для спецэффектов, но данные модули предназначены для работы с библиотекой opengl32.dll. Использование данной библиотеки, по сути дела, является работа с “компьютерной графикой”, но под графические оболочки таких операционных систем как Windows 9x/2k/XP, LinuxMandrake/RedHat/Slackware и тому подобных. Эта тема куда более обширная и интересная, но, как мы знаем, модуль graphics.h предназначен, в основном, для работы под операционную систему MS-DOS, в которой просто невозможно использование самого opengl’а. А по этому поводу, я считаю нужным, перейти непосредственно к основному разделу данной работы. Т.е. приступить к рассмотрению стандартных функций.


1. Анализ графического модуля “graphics.h”

Как было уже сказано, данный модуль используется для работы с графикой под ОС MS-DOS. Функции, используемые в нём, для работы с графикой, да и как и сама графика, довольно примитивны. Итак, начнём.

Для инициализации модуля требуется подключить, так называемый, заголовочный файл (#include <graphics.h>). В этом файле описаны все функции, которые требуются для написания программы работающей с “графикой”.

1.1 Анализ функции модуля

initgraph( &grdriver, &grmode, “path”); – функция инициализации графического режима, где &grdriver, &grmode, “path” – параметры загружаемого режима;

grdriverи grmode– переменные типа integer;

“path” – путь к загружаемому драйверу графического режима.

Функция закрытия графического режима: closegraph(); – данная функция без каких либо параметров и закрывает текущий графический режим.

Функция определения графического драйвера и видео режима: detectgraph( &grdriver, &grmode);

Функция, возвращающая структуру определения палитры: getdefaultpalette(); – возвращает указатель на заданную по умолчанию структуру палитры для текущего драйвера инициализированного по initgraph.

getdrivername(); – функция возвращает имя текущего графического драйвера.

getgraphmode(); – функция возвращает текущий графический режим.

getmoderange( grdriver, &low, &high); – функция возвращает диапазон режимов для данного графического драйвера, где grdriver, low, high – переменные типа integer.

graphdefaults(); – сбрасывает текущие настройки в настройки по умолчанию.

_graphgetmem(); – функция выделения памяти. Эту функцию вызывают подпрограммы в графической библиотеке, чтобы распределить память. Данную функцию можно использовать независимо от графической библиотеки, вызвав её с указанием нужного объёма памяти в байтах.

_graphfreemem(); – функция освобождения памяти. Используется в сочетании с _graphgetmem().

setgraphbufsize(); – функция изменяет внутренний размер графического буфера. Вызывается до initgraph().

graphresult(); – возвращает код ошибки для последней неудачно выполненной операции.

installuserdriver( int *name, inthuge( *detect)); – функция устанавливает драйвер определённый программистом. *name – название нового драйвера, *detect – указатель на дополнительную функцию авто определения, которая может сопровождать новый драйвер. Эта функция (авто определения) не берёт ни каких параметров и возвращает целочисленное значение.

registerbgidriver( *grdriver) – Функция сообщает графической системе, что драйвер устройства, на который указывает *grdriver был включён во время “линковки”.

registerbgifont( *font) – Функция информирует графическую систему, что шрифт, на который указывает *font был включен во время “линковки”.

restorecrtmode() – Функция восстанавливает режим, существовавший до активизации графического режима функцией initgraph().

arc( intx, inty, intstangle, intendangle, intradius); – Функция рисует дугу, по заданным координатам x,y, начальным и конечным углом stangle, endangle и заданным радиусом radius.

bar( intleft, inttop, intright, intbottom); – Функция рисует прямоугольник начиная от левого верхнего угла с координатами left, top до правого нижнего угла с координатами right, bottom.

bar3d( intleft, inttop, intright, intbottom, intdepth); – Функция рисует “трёхмерный прямоугольник” или, так сказать, подобие параллелепипеда, начиная от верхнего левого угла, до правого нижнего угла и с указанием глубины depth.

circle( intx, inty, intradius); – Функция рисует окружность с центром в точке с координатами ( x, y) и радиусом radius.

cleardevice(); – Функция очищает экран в графическом режиме и возвращает текущую позицию указателя в точку с координатами ( 0, 0).

clearviewport(); – Функция стирает область просмотра и перемещает текущую позицию в точку с координатами ( 0, 0), относительно области просмотра.

drawpoly( intnumpoints, int *polypoints); – Функция рисует полигон с количеством вершин numpoints и координатами вершин *polypoints. *polypoints является одномерным массивом.

ellipse( intx, inty, intstangle, intendangle, intxradius, intyradius); – Функция рисует эллипс с координатами в точке ( x, y), начальным и конечным углами stangle, endangle, и радиусами xradius, yradius по осям x и y.

fillpoly( intnumpoints, int *polypoints); – Функция рисует и закрашивает заданным цветом полигон.

fillelipse( intx, inty, intxradius, intyradius); – Функция рисует закрашенный эллипс.

floodfill( intx, inty, intborder); – Область, ограниченная цветной границей закрашивается установленным образцом и цветом.

getarccoords( &arcinfo); – Функция возвращает координаты последней точки, на которую был переведён указатель, где параметр &arcinfo объявлен как structarccoordstypearcinfo.

getaspectratio( &xasp, &yasp); – Получает значения коэффициента сжатия в &xasp, &yasp, где xasp, yasp являются переменными типа integer.

getbkcolor() – Возвращает значение типа integer текущего цвета фона.

getcolor() – Возвращает значение типа integer установленного на данный момент цвета.

getdefaultpalette() – ( дополнение) Возвращает структуру определения палитры в переменную объявленную как structpalettetypefar *<имя_переменной>=(void *) 0;.

getfillpattern( charfar *pattern); – Копирует определённый пользователем заполненный образец в память.

getfillsetting( &fillinfo); – Получает информацию о текущих настройках стиля и цвета, где параметр &fillinfo объявлен как structfillsettingstypefillinfo.

getimage( intleft, inttop, intright, intbottom, voidfar *bitmap); – Сохраняет картинку в специально отведённой области памяти, где left, top, right, bottom координаты картинки, а *bitmap указатель на область памяти.

getlinesettings( &lineinfo); – Получает текущий тип линии, образец и толщину, где параметр &lineinfo объявлен как struct linesettingstypelineinfo.

getmaxcolor(); – Возвращает значение типа integer, которое соответствует номеру цвета.

getmaxmode(); – Возвращает значение типа integer, которое соответствует максимальному номеру графического режима, для текущего драйвера.

getmaxx(); – Возвращает значение типа integer, которое соответствует максимальному количеству точек по оси x для текущего графического режима.

getmaxy(); – Возвращает значение типа integer, которое соответствует максимальному количеству точек по оси y для текущего графического режима.

getmodename( intmode_number); – Возвращает значение типа integer, которое соответствует указанному графическому режиму.

getpalette( &palette); – Получает информацию о текущей палитре, где параметр &palette объявлен как structpalettetypepalette.

getpalettesize(); – Функция возвращает значение типа integer, соответствующее количеству цветов палитры для текущего графического режима.

getpixel( intx, inty); – Функция возвращает номер цвета точки, находящейся по координатам ( x, y).

gettextsettings( &textinfo); – Функция возвращает текущие настройки фонта для текущего графического режима, где параметр &textinfo определён как structtextsettingstypetextinfo.

getviewsettings( &viewinfo); – Получает информацию о текущей области просмотра, где параметр &viewinfo определяется как structviewporttypeviewinfo.

getx(); – Функция типа integer возвращает текущую позицию указателя по оси x.

gety(); – Функция типа integer возвращает текущую позицию указателя по оси y.

grapherrormsg( interrorcode); – Возвращает код ошибки в виде переменной errorcode типа intger.

imagesize( intleft, inttop, intright, intbottom); – Определяет размер области памяти, необходимый для сохранения двоичного образа.

installuserfont( charfar *name); – Функция типа intger возвращает номер идентификатора шрифта, который можно передать функции settextstyle для выбора данного шрифта. Параметр *name это путь к файлу шрифта. Одновременно данной функцией можно подключить до двадцати шрифтов.

line( intx0, inty0, intx1, inty1); – Функция рисует линию от точки с координатами x0, y0 до точки с координатами x1, y1. Не обновляет текущую позицию.

linerel( intdx, intdy); – Функция рисует линию от текущей позиции до точки, находящейся на относительном расстоянии от текущей позиции, затем передвигает текущую позицию.

lineto( intx, inty); – Рисует линию от текущей позиции до точки с координатами ( x, y), затем переносит текущую позицию в ( x, y).

moverel( intdx, intdy); – Перемещает текущую позицию на относительное растояние.

moveto( intx, inty); – Перемещает текущую позицию в точку с координатами ( x, y).

outtext( charfar *textstring); – Выводит строку в графическом режиме. Строка должна заключатся в “”.

outtextxy( intx, inty, charfar *textstring); – Выводит строку в графическом режиме предварительно перейдя в точку с координатами ( x, y).

pieslice( int x, int y, int stangle, int endangle, int radius); – Рисуетизакрашиваетзамкнутыйсекторкруга.

putimage( int left, int top, void far *bitmap, int op); – Выводитбитовыйобразнаэкран.

putpixel( int x, int y, int color); – Рисуетточкускоординатами( x, y)ицветомcolor.

rectangle( int left, int top, int right, int bottom); – Рисуетпрямоугольникотточкискоординатами(left, top)доточкискоординатами( right, bottom).

Registerfarbgidriver(voidfar *driver); – Данная функция используется для регистрации удалённых графических драйверов.

Registerfarbgifont (voidfar *font); – Данная функция используется для регистрации удалённых шрифтов.

sector (intx, inty, intstangle, intendangle, intxradius, intyradius); – Функция рисует сектор круга установленным цветом, затем заполняет его используя образец и цвет, установленные функциями setfillstyle или setfillpattern.

setactivepage( intpage); – Устанавливает активную страницу для графического вывода.

setallpalette( &palette); – Устанавливает полную палитру цветов для данного режима, где переменная &palette определена как structpalettetypepalette.

setaspectratio( intxasp, intyasp); – Заменяет заданный по умолчанию аспект сжатия графической системы.

setbkcolor( intcolor); – Устанавливает цвет фона по его номеру заданному переменной color.

setcolor( intcolor); – Устанавливает цвет по его номеру заданному переменной color.

setfillpattern( charfar *upattern, intcolor); – Выбирает определённый пользователем образец заливки.

setfillstyle( intpattern, intcolor); – Функция устанавливает образец и цвет заливки.

setgraphmode( intmode); – Устанавливает систему в графический режим, определённый параметром mode. Сбрасывает все настройки в положение “по умолчанию”. Очищает экран.

setlinestyle( intlinestyle, unsignedupattern, intthickness); – Устанавливает стиль рисуемых линий для функций рисования line, lineto, rectangle, drawpoly, etc.

setpalette( intcolornum, intcolor); – Устанавливает палитру от цвета colornum до цвета color.

setrgbpalette( intcolornum, intred, intgreen, intblue); – Данная функция может использоваться с IBM 8514 и VGA драйверами.

settextjustify( inthoriz, intvert); – Устанавливает выравнивание текста для графического режима. По умолчанию стоит выравнивание по верхнему левому углу.

settextstyle( intfont, intdirection, intcharsize); – Устанавливает характеристики текста: стиль, положение( горизонтальное или вертикальное), размер шрифта.

setusercharsize( intmultx, intdivx, intmulty, intdivy); – Устанавливает определённый пользователем “коэффициент сжатия” шрифта. По умолчанию ширина шрифта определена как multx:divx, высота как multy:divy.

setviewport( intleft, inttop, intright, intbottom, intclip); – Устанавливает новую область просмотра для графического вывода. Параметр clip определяет отсечены или нет все рисунки текущей области просмотра.

setvisualpage( intpage); – Устанавливает страницу с номером page визуальной графической страницей.

setwritemode( intmode); – Устанавливает режим вывода объектов в графическом режиме. Параметр mode может принимать значения 0, которое соответствует режиму copy_put или 1, соответствующее режиму xor_put. Параметр copy_put использует ассемблерную команду MOV, рисуя поверх всех объектов новый объект. Параметр xor_put использует команду XOR (команду неэквивалентности), замещая предыдущий объект таким же новым. Используя дважды параметр xor_put, вы получите первоначальный результат.

textheight( charfar *textstring); – Функция возвращает высоту строки в количестве точек.

textwidth( charfar *textstring); – Функция возвращает ширину строки в количестве точек.

1.2 Анализ констант, типов и глобальных переменных модуля

arccoordstype – Используется функцией getarccoords для получения параметров текущей области просмотра.

struct arccoordstype

{

int x, y; /* center points of arc */

int xstart, ystart; /* start position */

int xend, yend; /* end position */

}

CGA_COLORS – Данная константа определяет цветовую схему, доступную для функция BGI, выполняющихся на CGA мониторах. Определена в модуле GRAPHICS.H. Используется функциями setallpalette, setbkcolor, setcolor, setpalette.

COLORS – Данная символьная константа устанавливает атрибут цвета символов на EGA и CGA мониторах. Определена в модуле CONIO.H. Используется функциями (функции описаны в модуле CONIO.H) textattr, textbackground, textcolor.

EGA_COLORS – Данная константа определяет цветовую схему, доступную для функция BGI, выполняющихся на EGA мониторах. Определена в модуле GRAPHICS.H. Используется функциями setallpalette, setbkcolor, setcolor, setpalette.

fill_patterns – Образцы заливки применяемые функциями getfillsettingsи setfillstyle( см. таблицу 1).

Таблица 1.

НазваниеЗначениеРезультат заполнения
EMPTY_FILL0Цветфона
SOLID_FILL1Сплошная заливка
LINE_FILL2Заливкатипа “---”
LTSLASH_FILL3Заливкатипа “///”
SLASH_FILL4“///” толстые линии
BKSLASH_FILL5“\” толстые линии
LTBKSLASH_FILL6Заливкатипа “\”
HATCH_FILL7Редкая штриховка
XHATCH_FILL8Сильная перекрестная
INTERLEAVE_FILL9“Чередование строк”
WIDE_DOT_FILL10Заливка точками(широк)
Таблица 1. продолжение.
CLOSE_DOT_FILL11Заливка точками(узк)
USER_FILL12Определ. пользователем

fillsettingstype – Используется функцией getfillsettings для получения текущих настроек заливки.

struct fillsettingstype

{

int pattern; /* current fill pattern */

int color; /* current fill color */

}

font_names – Имена для BGI шрифтов( см. таблицу 2).

Таблица 2.

НазваниеЗначениеРезультат
DEFAULT_FONT08x8 растровый шрифт
TRIPLEX_FONT1Штриховой тройной шрифт
SMALL_FONT2Штриховой маленький шрифт
SANS_SERIF_FONT3Штриховой "гротесковый” шрифт
GOTHIC_FONT4Штриховой готический шрифт

Используется функцией settextstyle().

graphics_drivers – Константа, определяющая BGI графические драйверы( см. таблицу 3).

Таблица 3.

КонстантаЗначение
DETECT0 (авто определение)
CGA1
Таблица 3. продолжение.
MCGA2
EGA3
EGA644
EGAMONO5
IBM85146
HERCMONO7
ATT4008
VGA9
PC327010

Используется функцией initgraph().

graphics_errors – Константа, соответствующая коду ошибки, возвращённому функцией graphresult()( см. таблицу 4).

Таблица 4.

Код ошибкиКонстантаgraphics_errorsСоответствующее сообщение об ошибке
0grOkНет ошибок
-1grNoInitGraph(BGI) графика не установлена (использовать initgraph)
-2grNotDetectedГрафические аппаратные средства не обнаружены
-3grFileNotFoundФайл драйвера не найден
-4grInvalidDriverНедействительный файл драйвера
-5grNoLoadMemНедостаточно памяти чтобы загрузить драйвер
-6grNoScanMemНедостаточно памяти в просмотре заливки
-7grNoFloodMemНедостаточно памяти для заливки
-8grFontNotFoundФайл шрифта не найден
-9grNoFontMemНедостаточно памяти для загрузки шрифта
-10grInvalidModeНедопустимый графический режим для выбранного драйвера
-11grErrorГрафическая ошибка
-12grIOerrorГрафическая ошибка ввода/вывода
-13grInvalidFontНедопустимый файл шрифта
-14grInvalidFontNumНедопустимый номер шрифта
-15grInvalidDeviceNumНедопустимый номер устройства
-18grInvalidVersionНедопустимый номер версии

graphics_modes – Константы графических режимов для каждого BGI драйвера( см. таблицу 5).

Таблица 5.

Графический драйвер

Графические режимы

(graphics_modes)

ЗначениеРазрешениеПалитраСтраницы
CGA

CGAC0

CGAC1

CGAC2

CGAC3

CGAHI

0

1

2

3

4

320 x 200

320 x 200

320 x 200

320 x 200

640 x 200

C0

C1

C2

C3

2color

1

1

1

1

1

MCGA

MCGAC0

MCGAC0

MCGAC0

MCGAC0

MCGAMED

MCGAHI

0

1

2

3

4

5

320 x 200

320 x 200

320 x 200

320 x 200

640 x 200

640 x 480

C0

C1

C2

C3

2color

2color

1

1

1

1

1

1

EGA

EGALO

EGAHI

0

1

640 x 200

640 x 350

16color

16color

4

2

EGA64

EGA64LO

EGA64HI

0

1

640 x 200

640 x 350

16color

4color

1

1

EGA-MONO

EGAMONOHI

EGAMONOHI

0

1

640 x 350

640 x 350

2color

2color

1*

2**

HERCHERCMONOHI0720 x 3482color2
ATT400

ATT400C0

ATT400C1

ATT400C2

ATT400C3

ATT400MED

ATT400HI

0

1

2

3

4

5

320 x 200

320 x 200

320 x 200

320 x 200

640 x 200

640 x 400

C0

C1

C2

C3

2color

2color

1

1

1

1

1

1

VGA

VGALO

VGAMED

VGAHI

0

1

2

640 x 200

640 x 350

640 x 480

16color

16color

16color

2

2

1

PC3270PC3270HI0720 x 3502color1
IBM8514

IBM8514HI

IBM8514LO

1

0

1024x 760

640 x 480

256color

256color

* – 64k на EGAMONO плате

** – 256k на EGAMONO плате

Данные параметры используются функциями detectgraph(), initgraph() и константами graphics_drivers.

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

line_styles – Константы стилей линий для функций getlinesettings() и setlinestyle()( см. таблицу 6).

Таблица 6.

КонстантаЗначениеРезультат
SOLID_LINE0Сплошная линия
DOTTED_LINE1Пунктир
CENTER_LINE2Центрированная линия
DASHED_LINE3Пунктирная линия
USERBIT_LINE4Определяется пользователем

line_widths – Константа ширины линий для функций getlinesettings() и setlinestyle()( см. таблицу 7).

Таблица 7.

КонстантаЗначениеРезультат
NORM_WIDTH1Ширина в 1-н пиксель
THICK_WIDTH3Ширина в 3-и пикселя

linesettingstype – Используется функциями getlinesettings() и setlinestyle() для корректировки рисования линий.

struct linesettingstype

{

int linestyle;

int upattern;

intthickness;

}

Таблица 8. Описание переменных структуры linesettingstype.

ЭлементОписание
upatternУстановленный пользователем битовый образец используется когда стиль линии стоит как USERBIT_LINE.
linestyleОпределяет в каком виде будут выводится следующие линии( сплошной, пунктирный, центрированный).
thicknessОпределяет будет ли толщина следующих линий обычной или толстой.

upattern – 16-и разрядный образец, который применяется только если стиль линии определён как USERBIT_LINE. В этом случае, когда бит в образце слова единица, соответствующая точка в линии рисуется установленным цветом.

Например, сплошная линия соответствует upattern равному 0xFFFF(т.е. рисуются все пиксели), в то время как пунктирная линия может быть если upattern равно 0x3333 или 0x0F0F или 0x3F3F( см. таблицу 9).

Таблица 9.

16-и битный образецupattern

..xx..xx..xx..xx

....xxxx....xxxx

..xxxxxx..xxxxxx

xxxxxxxxxxxxxxxx

0x3333(штрих пунктир)

0x0F0F(длинный штрих пунктир)

0x3F3F(более длинный штрих пунктир)

0xFFFF(сплошная линия)

MAXCOLORS – Определяет максимальное число цветов для массива полей в palettetype. Используется функцией setallpalette().

palettetype – Содержит информацию о палитре для текущего графического драйвера при запросах с использованием функций getpalette(), setpalette(), setallpalette().

struct palettetype

{

unsigned char size;

signed char colors[MAXCOLORS+1];

}

Таблица 10. Описание элементов структуры palettetype.

ЭлементОписание
SizeДаёт номер цветов в палитре для текущего графического драйвера в текущем режиме.
colorsМассив байтов, содержащий необработанный номер цвета для каждого входа в палитру. Если элемент цветов –1, то палитра для данного входа не определена.

pointtype – Содержит координаты точки.

structpointtype

{

intx;

inty;

}

putimage_ops – Параметры для функции putimage()( см. таблицу 11).

Таблица 11.

КонстантаЗначениеОписание
COPY_PUT0Битовый рисунок источника копируется на экран.
XOR_PUT1Исключающее ИЛИ. Отображает на экране исходное изображение.
OR_PUT2ИЛИ. Отображает на экране текущее изображение, не убирая предыдущего выведенного этого же изображения.
AND_PUT3Выводит на экран картинку поверх остальных объектов.
NOT_PUT4Копирует и вставляет инверсированный источник.

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

По низу

По центру

По верху

textdirections – Настройки текста. Содержит два параметра 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_NONE0Кнопки мыши не нажаты
MB_LEFT1Нажата левая кнопка мыши
MB_RIGHT2Нажата правая кнопка мыши
MB_LAR3Нажаты обе кнопки мыши
MB_MIDDLE4Нажата средняя кнопка мыши

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

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

struct tPoint

{

int x;

int y;

};

struct tMouseState

{

tPoint loc;

int but;

};

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

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

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

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

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

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

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

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

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

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

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

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


Заключение

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

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


Приложение 1

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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <iostream.h>

#include <graphics.h>

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++ и TURBOVISION. 1992г.

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

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


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно