Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Функция Инициализирует графическую систему.

 
 
 
 Синтаксис          #include <graphics.h>
 
                    void far  initgraph(int  far  *graphdriver,
 
                     int far *graphmode, char far *pathtodriver)
 
 
 
 Файл, содержащий   graphics.h
 
 прототип
 
 
 
 Описание           initgraph инициализирует графическую систему путем
 
                    загрузки  графического  драйвера  с   диска   (или
 
                    подтверждения                    работоспособности
 
                    зарегестрированного драйвера) и переводит  систему
 
                    в  графический  режим.
 
 
 
                    Для того   чтобы  запустить  графическую  систему,
 
                    прежде всего вызовите функцию initgraph. initgraph
 
                    загружает  графический драйвер и переводит систему
 
                    в графический режим. Вы можете указать графической
 
                    системе    использовать   конкретный   графический
 
                    драйвер и режим,  или, чтобы она сама определила в
 
                    процессе   работы  привязанный  к  данной  системе
 
                    видеоадаптер и выбратла  соответствующий  драйвер.
 
 
 
                    Если вы  указали  initgraph  автоопределение   она
 
                    вызывает   detectgraph   для  выбора  графического
 
                    драйвера     и     режима.     initgraph     также
 
                    переустанавливает  все  графические параметры в их
 
                    значения по умолчанию (текущая  позиция,  палитра,
 
                    цвет,  окно экрана,  и т.  д.) и переустанавливает
 
                    grapgresult  в  0.
 
 
 
                    Обычно initgraph  загружает  графический   драйвер
 
                    путем  выделения  памяти  для  драйвера (с помощью
 
                    функции     _graphgetmem),     затем     загружает
 
                    соответствующий    файл    .BGI    с    диска.   В
 
                    противоположность этой     схеме      динамической
 
                    загрузки, вы можете присоединить файл графического
 
                    драйвера    (или    несколько    таких     файлов)
 
                    непосредственно к   выполняемым  файлам.  Смотрите
 
                    более подробную  информацию  в   файле   UTIL.DOC,
 
                    который поставляется вместе с системой.
 
 
 
                    pathodriver определяeт    маршрут    по   которому
 
                    initgraph  будет  искать   графические   драйверы.
 
                    initgraph сначала ищет по маршруту,  определяемому
 
                    в pathtodriver,  затем ( если их там нет)  ищет  в
 
                    текущем каталоге. Следовательно, если pathtodriver
 
                    равен NULL,  файлы драйвера (*.BGI) должны быть  в
 
                    текущем каталоге. Таким же путем settexstyle будет
 
                    искать файлы (.CHR), содержащие шрифты.
 
 
 
                    *graphdriver -    целое,    которое     определяет
 
                    используемый графический драйвер. Вы можете задать
 
                    его значение,  используя константу graphics_driver
 
                    перечисляемого типа,  определенного в graphics.h и
 
                    показанного в таблице 2.3.
 
 
 
                    Таблица 2.3. Константы графических драйверов.
 
                    _____________________________________________
 
                    graphics_drivers
 
                    константа           численное значение
 
                    _____________________________________________
 
 
 
                    DETECT              0 (запрашивает
 
                                           автоопределе-
 
                                           ние драйвера)
 
                    CGA                 1
 
                    MCGA                2
 
                    EGA                 3
 
                    EGA64               4
 
                    EGAMONO             5
 
                    IBM8514             6
 
                    HERCMONO            7
 
                    ATT400              8
 
                    VGA                 9
 
                    PC3270              10
 
                    _____________________________________________
 
 
 
                    *graphmode - целое,  которое  определяет  исходный
 
                    графический  режим  (если  *graphdriver  не  равен
 
                    DETECT,  *graphmode  устанавливается  в  наивысшее
 
                    разрешение,  допустимое для данного драйвера).  Вы
 
                    можете  задать  значение   *graphmode,   используя
 
                    константу   перечисляемого   типа  graphics_modes,
 
                    определенную в graphics.h и приведенную в  таблице
 
                    2.5.
 
 
 
                    Замечание: Значения graphdriver и graphmode должны
 
                    быть установлены в значения из таблиц 2.5  и  2.3,
 
                    иначе вы   получите   непредсказуемый   результат.
 
                    Исключение составляет    лишь    случай,     когда
 
                    graphdriver = DETECT.
 
 
 
                    В таблице 2.5,  элементы столбца "Палитра" C0, C1,
 
                    C2 и C3 относятся  к  четырем  ранее  определенным
 
                    четырехцветным палитрам,  действительным для CGA и
 
                    совместимых систем.  Вы можете выбрать  цвет  фона
 
                    (элемент #0),  но остальные цвета не меняются. Эти
 
                    палитры подробно описаны в главе 8 "Видео-функции"
 
                    в "Руководстве     программиста"     (в    разделе
 
                    "Управление цветом"),  и коротко описаны в таблице
 
                    2.4.
 
 
 
     Таблица 2.4. Палитры цветов.
 
     -----------------------------------------------------------
 
     Номер         Константа присвоенная значению пиксела
 
     палитры          1               2               3
 
     -----------------------------------------------------------
 
          0     CGA_LIGHTGREEN   CGA_LIGHTRED       CGA_YELLOW
 
          1     CGA_LIGHTCYAN    CGA_LIGHTMAGENTA   CGA_WHITE
 
          2     CGA_GREEN        CGA_RED            CGA_BROWN
 
          3     CGA_CYAN         CGA_MAGENTA        CGA_LIGHTGRAY
 
     ------------------------------------------------------------
 
 
 
                    После обращения    к    initgraph     *graphdriver
 
                    устанавливается  в текущий графический драйвер,  а
 
                    *graphmode в текущий графический режим.
 
 
 
 Таблица 2.5. Графические режимы.
 
 
 
 

Графическ. graphics Знач. Колонок Палитра Страниц

 
 драйвер     _modes            * столбцов
 
 --------------------------------------------------------------
 
 CGA         CGAC0       0     320 x 200   C0          1
 
             CGAC1       1     320 x 200   C1          1
 
             CGAC2       2     320 x 200   C2          1
 
             CGAC3       3     320 x 200   C3          1
 
             CGAHI       4     640 x 200   2цвета      1
 
 
 
 MCGA        MCGAC0      0     320 x 200   C0          1
 
             MCGAC1      1     320 x 200   C1          1
 
             MCGAC2      2     320 x 200   C2          1
 
             MCGAC3      3     320 x 200   C3          1
 
             MCGAMED     4     640 x 200   2цвета      1
 
             MCGAHI      5     640 x 480   2цвета      1
 
 
 
 EGA         EGALO       0     640 x 200   16цветов    4
 
             EGAHI       1     640 x 350   16цветов    2
 
 
 
 EGA64       EGA64LO     0     640 x 200   16цветов    1
 
             EGA64HI     1     640 x 350   4 цвета     1
 
 
 
 EGA-        EGAMONOHI   3     640 x 350   2 цвета     1*
 
 MONO        EGAMONOHI   3     640 x 350   2 цвета     2**
 
 
 
 HERC        HERCMONOHI  0     720 x 348   2 цвета     2
 
 
 
 AT400       ATT400C0    0     320 x 200   C0          1
 
             ATT400C1    1     320 x 200   C1          1
 
             ATT400C2    2     320 x 200   C2          1
 
             ATT400C3    3     320 x 200   C3          1
 
             ATT400MED   4     640 x 200   2 цвета     1
 
             ATT400HI    5     640 x 400   2 цвета     1
 
 
 
 VGA         VGALO       0     640 x 200   16цветов    2
 
             VGAMED      1     640 x 350   16цветов    2
 
             VGAHI       2     640 x 380   16цветов    1
 
 
 
 PC3270      PC3270HI    0     720 x 350   2 цвета     1
 
 
 
 IBM8514     IBM8514HI   0     640 x 480   256цветов
 
             IBM8514LO   0    1024 x 768   256цветов
 
 
 
  *  64К на плате EGAMONO
 
 **  256К на плате EGAMONO
 
 --------------------------------------------------------------
 
 
 
 Возвращаемое       initgraph всегда  устанавливает   внутренний   код
 
 значение           ошибки. В случае успешного выполнения код равен 0.
 
                    В случае же ошибки *graphdriver устанавливается  в
 
                    -2,  -3,  -4  или  -5,  и  graphresult  возвращает
 
                    соответствующие значения, перечисленные ниже:
 
 
 
                     -2 -  Не может определить тип графической
 
                           карты (grNotDetected).
 
 
 
                     -3 -  Не может найти файл драйвера
 
                           (grFileNotFound).
 
 
 
                     -4 -  Неправильный драйвер (grInvalidDriver).
 
 
 
                     -5 -  Недостаточно памяти для загрузки
 
                           драйвера (grNoLoadMem).
 
 
 
 Переносимость      Функция уникальна  для  Borland C++.  Она работает
 
                    только на компьютерах IBM PC и совместимых с ними,
 
                    оснащенных дисплейными адаптерами, поддерживающими
 
                    графический   режим.   Функция   не  совместима  с
 
                    Windows.
 
 
 
 Смотри также       сlosegraph, detectgraph,        getdefaultpalette,
 
                    getdrivername,     getgraphmode,     getmoderange,
 
                    graphdefault,      _graphgetmem,      graphresult,
 
                    installuserdriver,              registerbgidriver,
 
                    registerbgifont,  restorecrtmode, setgraphbufsize,
 
                    setgraphmode
 
 
 
 Пример:
 
 
 
 #include <graphics.h>
 
 #include <stdlib.h>
 
 #include <stdio.h>
 
 #include <conio.h>
 
 
 
 int main(void)
 
 {
 
 /* требуется автоопределение */
 
 int graphdriver = DETECT, gmode, errorcode;
 
 
 
 /* мнмцмализация графического режима */
 
 initgraph(&graphdriver,&gmode,"");
 
 
 
 /* получение результата инициализации */
 
 errorcode = graphresult();
 
 if(errorcode != grOk)  /* если ошибка */
 
 {
 
    printf("Ошибка :%s\n",grapherrormessage(errorcode));
 
    printf("Для останова нажмите любую клавишу\n");
 
    getch();
 
    exit(1);  /* завершение с кодом ошибки */
 
 }
 
 line(0,0,getmaxx(),getmaxy());
 
 
 
 getch();
 
 closegraph();
 
 return 0;
 
 }
 
 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS