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

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


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

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



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

Функция Получает текущий цвет линии, шаблон и толщину.

 
 
 
 Синтаксис          #include <graphics.h>
 
                    void far getlinesettings(struct linesettingstype
 
                                                  far *lineinfo);
 
 
 
 Файл, содержащий   graphics.h
 
 прототип
 
 
 
 Описание           getlinesettings заполняет структуру  linesettings,
 
                    на    которую    указывает    параметр    lineinfo
 
                    информацией,  о  текущем  типе  линий,  толщине  и
 
                    шаблоне.
 
 
 
                    Структура linesettingstype определена в graphics.h
 
                    следующим образом:
 
 
 
                        struct linesettingstype{
 
                           int linestyle;
 
                           unsigned upattern;
 
                           int thickness;
 
                        };
 
 
 
                    linestyle определяет   тип  линий,  который  будет
 
                    использоваться     (     непрерывная,     пунктир,
 
                    штрихпунктир,    штриховая).   Перечисляемый   тип
 
                    line_styles,  определенный  в   graphics.h,   дает
 
                    символические имена этим операциям:
 
 
 
                    -------------------------------------------
 
                      Название      Знач.       Описание
 
                    -------------------------------------------
 
                     SOLID_LINE        0     сплошная
 
                     DOTTED_LINE       1     пунктир
 
                     CENTER_LINE       2     штрихпунктир
 
                     DASHED_LINE       3     штриховая
 
                     USERBIT_LINE      4     тип линии, заданный
 
                                             пользователем
 
                     -------------------------------------------
 
 
 
                    thickness определяет,  будут ли последующие  линии
 
                    тонкими или толстыми.
 
 
 
                    -------------------------------------------
 
                      Название      Знач.       Описание
 
                    -------------------------------------------
 
                     NORM_WIDTH        1     толшина в 1 пиксель
 
                     THICK_WIDTH       3     толщина в 3 пикселя
 
                    --------------------------------------------
 
 
 
                    upattern -   это   16-битный    шаблон,    который
 
                    используется,   только   когда   linestyle   равен
 
                    USERBIT_LINE (4).  В  этом  случае  каждый  бит  в
 
                    шаблоне,  установленный в 1, соответствует пикселю
 
                    на линии в текущем цвете. Например, сплошной линии
 
                    соответстсвует  upattern  равный 0xFFFF ( рисуются
 
                    все пиксели),  а пунктиру соответствует  upattern,
 
                    равный   0x3333   или  0x0F0F.  Если  же  параметр
 
                    linestyle в  setlynestyle  не  равен  USERBIT_LINE
 
                    (!=4),     то    upattern    поддерживается,    но
 
                    игнорируется.
 
 
 
 Возвращаемое       Нет.
 
 значение
 
 
 
 Переносимость      Функция уникальна для Borland  C++.  Она  работает
 
                    только на компьютерах IBM PC и совместимых с ними,
 
                    оснащенных дисплейными адаптерами, поддерживающими
 
                    графический  режим.  Функция   не   совместима   с
 
                    Windows.
 
 
 
 Смотрите также     setlinestyle.
 
 
 
 Пример:
 
 
 
 #include <graphics.h>
 
 #include <stdlib.h>
 
 #include <stdio.h>
 
 #include <conio.h>
 
 
 
 /* имена поддерживаемых типов линий */
 
 char lname[] = {"SOLID_LINE",
 
                 "DOTTED_LINE",
 
                 "CENTER_LINE",
 
                 "DASHED_LINE",
 
                 "USERBIT_LINE"
 
                 };
 
 
 
 int main(void)
 
 {
 
 /* Запрос автоопределения */
 
 int graphdriver = DETECT, gmode, errorcode;
 
 struct linrsettingstype lineinfo;
 
 int midx,midy;
 
 char lstyle[80],lpattern[80],lwigth[80];
 
 
 
 /* инициализация графики и локальных переменных */
 
 initgraph(&graphdriver,&gmode,"");
 
 
 
 /* получение результата инициализации */
 
 errorcode = graphresult();
 
 if(errorcode != grOk)  /* если ошибка */
 
 {
 
    printf("Ошибка :%s\n",grapherrormessage(errorcode));
 
    printf("Для останова нажмите любую клавишу\n");
 
    getch();
 
    exit(1);  /* завершение с кодом ошибки */
 
 }
 
 midx = getmaxx()/2;
 
 midy = getmaxy()/2;
 
 /* получить информацию о типе линии */
 
 getlinesettings(&lineinfo);
 
 /* преобразовать в строки */
 
 sprintf(lstyle,"Тип линии: %s\n",lname[lineinfo.linestyle]);
 
 sprintf(lpattern,"Шаблон определяемый пользователем: 0x%F",
 
         lineinfo.upattern);
 
 sprintf(lwigth,"Толщина линии: %d\n",lineinfo.thickness);
 
 
 
 /* вывести информацию */
 
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 
 outtextxy(midx,midy,lstyle);
 
 outtextxy(midx,midy+2*textheight("W"),lpattern);
 
 outtextxy(midx,midy+4*textheight("W"),lwigth);
 
 /* очистка */
 
 getch();
 
 closegraph();
 
 return 0;
 
 }


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

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




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



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


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