Краткое описание по работе с Direct Draw


   queensbakerycafe.com            

Программирование DirectDraw


Здесь будут представлены примеры использования DirectDraw в основном основанные на примерах к DirectX SDK. Данные примеры, конечно, будут полностью функциональными , но не совсем годными для практических приложений. Это вызвано тем, что в практических реализациях необходим учет характера поведения конкретного приложения, а здесь приводятся лишь грубые схемы. p>

1. Что Вам необходимо для начала использования DirectDraw

Для начала необходимо заиметь DirectX SDK. Где его взять? Путей много, например: DirectX SDK ver.3 входит в состав Visual C++ (ver.5), DirectX SDK версии 5.0 я нашел на http://www.download.com, DirectX SDK ver.5.2. предлагает бесплатно за 12$ Microsoft на своем сайте (Вам вышлют CD по почте - но это для владельцев American Express или VisaCard), компакт-диски MSDN также могут содержать данный SDK. И конечно на рынках пиратских CD

В состав SDK входят все необходимые библиотеки, заголовочные файлы, help файлы и большой набор примеров

Типовым джентльменским набором является ddraw.h, ddraw.dll, ddraw.lib (implib на ddraw.dll)

В общем, необходимо включить в Ваш проект DDraw.lib и в исходный файл ddraw.h

Использовать DirectDraw можно только с Win32 (Windows 95, NT (не пробовал)). Если Вы используете версию Win95 OSR, то там скорее всего DirectX уже установлен. Кроме того DirectX скорее всего установила Вам какая нибудь игрушка (см. DDraw.dll в поддиректории system )

Программировать с использованием DirectDraw можно в различных средах программирования. Все примеры, приводимые ниже, точно должны работать с Microsoft Visual C++ ver.5

2. Инициализация DirectDraw

Первым делом, при использовании DirectDraw ,необходимо его инициализировать. Ниже дан пример кода инициализации

Пример инициализации DirectDraw

 

 

 

LPDIRECTDRAW lpDD; // указатель на объект DirectDraw

                   // вообще их может быть несколько, я ,например, использовал

                   //по одному объекту на каждое окно в MDI приложении (см пример

                   //использования DirectDraw c MFC)

/*

 * Функция инициализации объекта DirectDraw

 *   1) Создаем  Direct Draw Object

 *   2) Устанавливаем вид доступа

 *   3) Устанавливаем видео моду дисплея

 *

 */

BOOL DirectDrawInit(HWND hwnd)

{

    HRESULT ddrval;

   /*

    * Создание (получение) указателя на основной объект DirectDraw.

    *

    */

    ddrval = DirectDrawCreate( NULL, &lpDD, NULL );

    if( ddrval != DD_OK )

    {

        goto lError;

    }

   /*

    * Теперь зададим уровень доступа, который может иметь следующие значения

    *

    * DDSCL_EXCLUSIVE дает Вам полный доступ к видеопамяти и управлению видеорежимами

    * требует флаг DDSCL_FULLSCREEN , т.е. Вы работаете со всем экраном сразу

    * Это основной (типовой режим работы DirectDraw

    * DDSCL_NORMAL используется для обеспечения оконного доступа. Правда доступ

    * у вас все равно ко всему экрану , обеспечивать оконность все равно приходится вручную

    * (обычные недоделки Microsoft)

    * как добиться оконного поведения см пример класса CDDrawView доступном для download на данном

    * сайте

    */

    ddrval = lpDD->SetCooperativeLevel( hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );

    if( ddrval != DD_OK )

    {

        lpDD->Release();

        goto lError;

    }

   /*

    * Установим видео моду 800x600 256 цветов

    * (видео моду можно изменять, только если установлен флаг DDSCL_EXCLUSIVE

    */

    ddrval = lpDD->SetDisplayMode( 800, 600, 8);

    if( ddrval != DD_OK )

    {

        lpDD->Release();

        goto lError;

    }

    return TRUE;

lError:

    // здесь можно вставить код для оповещения пользователя о невозможности

    // инициализации DirectDraw

    return FALSE;

}

<

Содержание  Назад  Вперед