4. Функция BitBltO с растровой операцией SRCC0PY восстанавливает фоновое изображение.
5. Выдерживается пауза.
6. Восстанавливается фоновое изображение, и процесс повторяется с самого начала.
Режимы вывода
В проекте SpriteTransparent используется более современное средство решения данной задачи - функция копирования с прозрачным фоном
TransparentBlt(HDC.int.int.int.int.HDC.int.int.int.int.UINT);
При помощи параметров функции передаются контекст, координаты и размеры источника и приемника. В качестве последнего параметра указывается цвет, который будет считаться прозрачным. Чтобы использовать эту функцию, в стандартный набор компонуемых библиотек мне потребовалось добавить библиотеку msimg32.lib, хотя, согласно электронной справке, функция должна находиться eGDI.dll.
gj: Запрос параметров Э контекста В предыдущих главах было показано, как создаются и заносятся в контекст различные объекты. Для получения параметров объекта по его дескриптору можно использовать функцию GetObjectCHGDI OB J hgdiobj. int cbBuffer, LPVOID lpvObject). Эта функция получает дескриптор объекта hgdi obj, длину cbBuffer и адрес 1 pvObject буфера, в который она перешлет в зависимости от типа объекта одну из структур - LOGPEN, LOGBRUSH, BITMAP, DIBSECTION или LOGFONT.
Поля первых двух структур были описаны ранее. Если hgdiobj является дескриптором растрового изображения (HBITMAP), то данной функции можно передавать указатель на один тип BITMAP или DIBSECTION. Выбор конкретного типа зависит от длины буфера. Если параметр cbBuffer равен sizeof (DIBSECTION), то в буфер запишется структура типа DIBSECTION. Если же параметр cbBuffer равен si zeof (BITMAP), то будет записана структура BITMAP. Но запрашивать структуру DIBSECTION имеет смысл только при хранении битовой карты в аппаратно-независимом формате.
Если приложение не хранит дескрипторы объектов, занесенных в контекст устройства, то их можно извлечь из контекста при помощи следующей функции: HGDIOBJ GetCurrentObjectC HDC hdc. UINT uObjectType )