Загрузка изображения в DirectDraw. Загрузка изображений может происходить заранее. Например, в играх картинки загружаются на этапе загрузки уровня, а в демонстрационных программах на этапе старта программы. К тому же может понадобиться загрузки множества картинок.
Для загрузки в заглавном файле ddfunc.h добавляем описание функции:
IDirectDrawSurfасе7 * LoadBMPToSurface(LPCTSTR filename, IDirectDraw7 * ppiDD)
Функция получает два параметра: имя файла, ресурс которого загрузки и указатель на интерфейс iDirectDraw7, который понадобится для создания поверхности, куда будет загружена картинка. Как результат функция возвращает указатель на созданную поверхность.
Отображение изображений в DirectDraw позволяет убедиться, что DirectDraw инициализируется верно, а изображение загружается на поверхность правильно.
Код отображения пишется между функциями BeginPaint и EndPaint, которые сгенерировал мастер при создании программы. Сначала проверяем, существует поверхность с картинкой и является ли текущий режим полноэкранным. Если так, то копируем картинку в задний буфер с помощью функции BltFast:
Backsurf -> BltFast (0, 0, imagesurf, NULL, DDBLTFAST_WAIT) В этом методе первый и второй параметры определяют левую и верхнюю позицию, в которую нужно скопировать содержимое поверхности; третий параметр - поверхность, с которой нужно скопировать данные; четвертый - область в поверхниджерели, которую необходимо скопировать; пятый - определяет тип копирования.