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

                             //DDENUM_NONDISPLAYDEVICES

                             //DDENUM_DETACHEDSECONDARYDEVICES

                               DDENUM_ATTACHEDSECONDARYDEVICES//сообщать о всех драйверах и присоединенных к нему устройствах (акселераторах) 

                            );

      }

//Получение информации о поддерживаемых адаптером видеорежимах (всех его драйверах и присоединенных к нему устройствах

            //(Для работы EnumDisplayModes() используется функция обратного вызова EnumModesCallback2(), созданная в этой программе)

    if(nF1==3)//выводим по 3-му нажатию на F1

               {  hMyOutFile=CreateFile(//объявление файла для вывода результатов анализа поддерживаемых режимов

                                                "DisplayModes.doc",//имя создаваемого файла с перечнем поддерживаемых режимов

                                GENERIC_WRITE,     //доступ - только для записи

                              //FILE_SHARE_READ,   //разрешаем одновременное чтение файла другим потоком

                                                       0,                 //разрешаем одновременное чтение файла другим потоком

                                                       NULL,              //атрибут защиты

                                                       OPEN_ALWAYS,       //открывать файл всегда

                                0,                 //флаг,аттрибут = буфер создавать не надо

                                                       NULL               //не используем

                                               );

                  hRet=pDirectDraw7->EnumDisplayModes(DDEDM_REFRESHRATES,//перечислять и режимы с различной частотой обновления экрана

                                             NULL,              //перечислять ВСЕ режимы

                                             NULL,              //не передаем дополнительную информации, передаваемой из программы непосредственно в функцию обратного вызова ( EnumModesCallback2() )

                                             EnumModesCallback2 //имя функции обратного вызова(для вывода инф об очередной определенном режиме

                                            );

         //Закрываем файл

                   CloseHandle(hMyOutFile);// закрыли файл

                }

//=======================================

    }//конец [if(wParam==VK_F1)...] обработки нажатия F1

   break;//конец обработки WM_KEYDOWN (выходим из switch на конец WndProc())

  /****************************************************************************/

   case WM_PAINT://Начальный вывод в рабочую область классического окна и обработка дефектных участков

    static PAINTSTRUCT ps; //структура для работы BeginPaint()

    hDC = BeginPaint(hWnd,&ps);//  в начале WM_PAINT

          SetTextColor(hDC, RGB(255,255,0));//Цвет букв текста

        //SetBkColor(hDC, RGB(255,0,255)); //Цвет фона символов

          SetBkMode(hDC,TRANSPARENT);      //Фон символов не выводить

                          pStr="ВЫВОД в классическое Windows-окно (желтый текст ниже):";

          TextOut(hDC,10,5,pStr,strlen(pStr));//Вывод текста

          pStr="Для перевода окна в режим DirectDraw управления нажмите клавишу 'F1' (Выход: Alt-F4)";

          TextOut(hDC,10,30,pStr,strlen(pStr));//Вывод текста

                          pStr="Для ВЫВОДА DirectDraw данных нажимайте 'F1' любое количество раз (Выход: Alt-F4)";

          TextOut(hDC,10,50,pStr,strlen(pStr));//Вывод текста

    EndPaint(hWnd,&ps); // !!! Обязательно в конце WM_PAINT

   break;

   /*************************************************************************/

   case WM_DESTROY: //зачистка VRAM, RAM перед завершением работы программы

       if (pPrimarySurface!=NULL)

        {//Уничтожаем в VRAM массив первичной поверхности(рабочей части окна)

           pPrimarySurface->Release();

           pPrimarySurface = NULL;

            }