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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


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

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



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

putimage

 
 Функция            Выводит на экран битовый образ.
 
 
 
 Синтаксис          #include <graphics.h>
 
                    void far putimage(int left,int top,
 
                                       void far *bitmap,int op);
 
 
 
 Файл, содержащий   graphics.h
 
 прототип
 
 
 
 Описание           putimage помещает битовый образ, ранее сохраненный
 
                    с помощью getimage,  обратно на экран,  где  левый
 
                    верхний  угол образа находится в точке (left,top).
 
                    bitmap указывает область памяти в котором хранится
 
                    требуемый образ.
 
 
 
                    Параметр op определяет составной оператор, который
 
                    определяет   вычисление  цвета  для  каждой  точки
 
                    (pixel) экрана, основываясь на существующей уже на
 
                    экране  точке  и  соответствующей  точке  образа в
 
                    памяти.
 
 
 
                    Перечень значений putimage_op  (как  определено  в
 
                    graphics.h) дает названия следующим операциям:
 
 
 
                    -------------------------------------------
 
                    ИМЯ          ЗНАЧ.       ОПИСАНИЕ
 
                    -------------------------------------------
 
                    COPY_PUT      0          копия
 
                    XOR_PUT       1          исключающее "или"
 
                    OR_PUT        2          "или"
 
                    AND_PUT       3          " и "
 
                    NOT_PUT       4          копия источника с
 
                                             инверсией
 
                    -------------------------------------------
 
 
 
                    Другими словами, COPY_PUT скопирует побитный образ
 
                    источника  на  экран,  XOR_PUT  выполнит  операцию
 
                    ИСКЛЮЧАЮЩЕЕ ИЛИ  над  уже  находящемся  на  экране
 
                    образом,  OR_PUT  выполнит  операцию  ИЛИ  над уже
 
                    находящемся на экране образом и т.д.
 
 
 
 Возвращаемое       Нет.
 
 значение
 
 
 
 Переносимость      Функция уникальна для Borland  C++.  Она  работает
 
                    только на компьютерах IBM PC и совместимых с ними,
 
                    оснащенных дисплейными адаптерами, поддерживающими
 
                    графический  режим.  Функция   не   совместима   с
 
                    Windows.
 
 
 
 Смотрите также     getimage, imagesize, putpixel, setvisualpage.
 
 
 
 Пример:
 
 
 
 #include <graphics.h>
 
 #include <stdlib.h>
 
 #include <stdio.h>
 
 #include <conio.h>
 
 
 
 #define ARROW_SIZE 10
 
 
 
 void draw_arrow(int x,int y);
 
 
 
 int main(void)
 
 {
 
 int graphdriver = DETECT, gmode, errorcode;
 
 void *arrow;
 
 int x,y,maxx;
 
 unsigned int size;
 
 
 
 /* инициализация драйвера и локальных переменных */
 
 initgraph(&graphdriver,&gmode,"");
 
 
 
 /* получение результата инициализации */
 
 errorcode = graphresult();
 
 if(errorcode != grOk)  /* если ошибка */
 
 {
 
    printf("Ошибка :%s\n",grapherrormessage(errorcode));
 
    printf("Для останова нажмите любую клавишу\n");
 
    getch();
 
    exit(1);  /* завершение с кодом ошибки */
 
 }
 
 maxx = getmaxx();
 
 x = 0;
 
 y = getmaxy()/2;
 
 /* нарисовать перемещаемый объект */
 
 draw_arrow(x,y);
 
 /* определить размер памяти, для хранения изображения */
 
 size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE);
 
 /* выделить память */
 
 arrow = malloc(size);
 
 /* взять изображение */
 
 getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow);
 
 /* продолжать, пока не будет нажата клавиша */
 
 while(!kbhit())
 
 {
 
    /* стереть старый образ */
 
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
 
    x += ARROW_SIZE;
 
    if(x >= maxx)
 
       x = 0;
 
    /* нарисовать изображение */
 
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
 
 }
 
 
 
 free(arrow);
 
 closegraph();
 
 return 0;
 
 }
 
 
 
 void draw_arrow(int x,int y)
 
 {
 
    /* нарисовать на экране стрелку */
 
    moveto(x,y);
 
    linerel(4*ARROW_SIZE,0);
 
    linerel(-2*ARROW_SIZE,-1*ARROW_SIZE);
 
    linerel(0,2*ARROW_SIZE);
 
    linerel(2*ARROW_SIZE,-1*ARROW_SIZE);
 
 }


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

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




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



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


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