Вивід вікна, керованого методами DirectDraw бібліотеки Direct v.7, страница 3

                         {  pDirectDraw7=NULL;//обнуляем поинтер на экземпляр DirectDraw7 перед обновлением его значения

                          //создание экземпляра (== интерфейса) DirectDraw

                            hRet=DirectDrawCreateEx(

                                                  NULL,                 // создавать для текущего графич. адаптера (можно отключить аксерераторы или их эмуляцию !!!)

                   (VOID**)&pDirectDraw7,// получаем pointer входа в DirectDraw7 (доступ к его методам)

                   IID_IDirectDraw7,     // имя нужного интерфейса DirectDraw7

                   NULL);                // не используется

          //Контроль кодов ошибок создания экземпляра объекта DirectDraw 

            if(hRet==DD_OK)pStr="СОЗДАН новый экземпляр объекта DirectDraw7";

            if(hRet!=DD_OK)pStr="Error при создании DirectDraw7";

            if(hRet==DDERR_DIRECTDRAWALREADYCREATED)pStr="DirectDraw7 уже был создан";

         }

       //Задание уровня использования видеоадаптера (есть 12 уровней)

//        if(nF1<=2)//!!! делаем только при первых двух нажатиями 'F1'

                           {  hRet=pDirectDraw7->SetCooperativeLevel(

                                                         hWnd,             //хендел на первичное (классическое) Windows окно

                                  DDSCL_EXCLUSIVE | //монопольноt управление работой графич. адаптера

                                                                                                DDSCL_FULLSCREEN);//весь экран

                                //DDSCL_NORMAL);// == Windows окно (работает при стиле WS_OVERLAPPEDWINDOW в CreateWindowEx()

                            //ВНИМАНИЕ:

                    //Изменения уровня использования видеоадаптера функцией SetCooperativeLevel()

                    //требует при повторном входе в оконную функцию обновить экземпляр класса DirectDraw.

                           }

//  /*

              //Задание графического режима вывода на экран

//     if(nF1<=2)//!!! делаем при первых двух нажатиями 'F1'

            {hRet=pDirectDraw7->SetDisplayMode(

                                                                  1024, // пикселей по x

                                                    768, // пикселей по y

                                                     32, // бит на пиксель

                                                 //  16, // бит на пиксель

                                                 //   8, // бит на пиксель

                                           NULL, // частота кадров прежняя

                                          NULL);// не используется

        }

//  */

//!!!СОЗДАНИЕ ПОВЕРХНОСТИ, подконтрольной средствам DurectX v.7.0:

// Сздадим ПЕРВИЧНУЮ (Primary) поверхность (Surface)

static DDSURFACEDESC2 ddSurfaceDesc={NULL};//объявление структуры для хранения параметров поверхности c обнулением начапьных значений ее полей !!!

  //ZeroMemory(&ddSurfaceDesc, sizeof(ddSurfaceDesc));//обнуление структуры для параметров поверхности

  //Установка необходимых (желаемых) начальных значений полей структуры DDSURFACEDESC2

            ddSurfaceDesc.dwSize=sizeof(ddSurfaceDesc); //поле размера структуры

            ddSurfaceDesc.dwFlags=DDSD_BACKBUFFERCOUNT | // разрешаем использовать BACKBUFFER

                                          DDSD_CAPS;             // разрешаем использовать вторичные поверхности

            ddSurfaceDesc.ddsCaps.dwCaps= DDSCAPS_PRIMARYSURFACE | // видимой должна быть первичная поверхность

                                                  DDSCAPS_COMPLEX |        // == создается комплексная поверхность

                                          DDSCAPS_FLIP;            // разрешается Flip() переключение поверхностей

            ddSurfaceDesc.dwBackBufferCount=1; // будем использовать 1 (один)BACKBUFFER

            //Создание ПЕРВИЧНОЙ поверхности (поверхности, видимой на экране)