Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Професиональное программирование


Информационный Канал Subscribe.Ru

Доброго утра всем.

Сегодня восполняем все упущения по статьям.

Без всяких отлагательств:

Совместно используемые библиотеки в C под Linux для начинающих. (продолжение)
Автор: LogRus

Иногда требуется загрудить какую нибуть библиотеку я вно не компануя её. Например страшное слово плагин. Для этих целей у нас есть dlopen, dlclose, dlsym и dlerror объявленны в dlfcn.h, компилируется с флагом -ldl.

void *dlopen(const char * filename, int flag);
const char * dlerror(void);
void * dlsym(void * handle, char * symbol);
int dlclose(void * handle);

Функция dlopen открывает файл filename с флагами flag. Вернее откравает она его в том случае, если он еще небыл кем-то открыт в этом случае она увеличивет счетчик ссылок возврашает дискриптор библиотеки. Путь к библиотеки можно не указывать, тогда бибилиотека ищется . dlclose совершает обратную работу уменьшает счетчик и закрывает библиотеку, если её больше не использует.
Функция dlsys возврашает указатель на функцию или переменную с именем symbol для библиотеки Handle.
Функция dlerror возвращает струказатель на строку с описанием ошибки.

Пример:

void * handle = dlopen("mylib.so", RTLD_LAZY);
void (* test)() = dlsym( handle, "myfunc");
(* test)();
dlclose(handle);

Если библиотека пишется на C++ имеет смысл объявить обще доступные функции со спецификатором extern "C".

extern "C" void my_func();

Это делается из-за того, что компилятор C++ имеет свойство подменять имена функций своими именами в которых закодированна информация о функции.

Статья полностью здесь: http://club.shelek.com/viewart.php?id=111

--------------------------------------------------------------------
Вторая статья:

Советы по Windows (часть 5)
Автор: Гром

Сегодня я познакомлю вас с выводом bitmap на экран.
В WinAPI место куда выводится графика внутри окна называется device context (далее контекст).

Вначале создадим приложение воспользовавшись Wizard-ом и выберем вариант Win32 application. Внутри следующего шага выберем Typical Hello Word Application.
Результатом будет один .cpp файл называемый по имени программы – у меня test222.cpp.

Во вкладке Class View можно видеть список функций. Одна из них WndProc – как раньше писалось, занимается обработкой сообщений, приходящих к программе (окну).

Посмотрим на код отвечающий за обработку WM_PAINT.

case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;


Как видите для рисования на окне сначала получаем контекст окна hdc, затем DrawText рисует в окне заданный ранее текст.

Уберем строчки которые нам будут не нужны:

// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);

Перейдем в папку ресурсов – Resource View и там создадим Bitmap заготовку. Для этого выберем пункт Insert Bitmap после добавления появится квадратик пустой картинки – я ее закрасил зеленым цветом и ничего больше не менял – для нашего теста вполне подойдет.

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

Статья полностью: http://club.shelek.com/viewart.php?id=112
------------------------------------------------------------

И как всегда книжки - опять две штуки...

1. Школа PHP - той же серии что и школы XML на русском - качать здесь: http://club.shelek.com/download.php?id=88
2. Школа SQL - той же серии на русском - качать здесь: http://club.shelek.com/download.php?id=89

------------------------------------------------------------

Кстати, первая статья появилась сегодня утром и вы, уважаемые читатели, могли ее прочесть раньше.
Я к тому, что обновления сайта делаются уже все чаще и чаще самими авторами, я же всего собираю имеющиеся обновления и выпускаю рассылку.
Само собой, что моя статья не последняя а первая в ряду тех, которые я буду делать в освободившееся время, а вы можете смотреть обновления прямо здесь http://club.shelek.com/ не дожидаясь рассылки, если хотите свеженького пораньше.

Удачи всем вам.
С уважением, Гром.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное