hRet=pDirectDraw7->CreateSurface(
&ddSurfaceDesc,//адрес структуры с желаемыми параметрами поверхности
&pPrimarySurface,//получаем pointer на поверхность (адрес ее начала в VRAM)
NULL);// не используется
//Определение параметров текущего режима (== текущих параметров первичной поверхности)
hRet=pDirectDraw7->GetDisplayMode(&ddSurfaceDesc);//
//Блокируем ПЕРВИЧНУЮ поверхность (== рабочую область экрана)
hRet=pPrimarySurface->Lock(
NULL,//блокируем ВСЮ поверхность (можно только часть == RECT)
&DDSurfaceDesc,//адрес вспомогательной структуры для хранения параметров РЕАЛЬНОЙ ПЕРВИЧНОЙ поверхности(выводимой сейчас)- структура объявлена в ГЛОБАЛЬНЫХ переменных
DDLOCK_SURFACEMEMORYPTR | //флаг = получить поинтер на начало поверхности
DDLOCK_WAIT,//ожидать до получения реального доступа к поверхности
NULL); // не используется
//Получение GDI контекста для вывода
hRet=pPrimarySurface->GetDC(&hDC);// контекст для первичной поверхности
//ВЫВОД текста средствами GDI (выводим параметры текущего режима) sprintf(Str,"ВЫВОД в DirectDraw-окно (см. ниже):");
sprintf(Str,"ВЫВОД в DirectDraw-окно (см. ниже):");
TextOut(hDC,10,90,Str,strlen(Str));//вывод текста
sprintf(Str,"nF1=%d",nF1);
TextOut(hDC,420,90,Str,strlen(Str));//номер нажатия на F1
TextOut(hDC,10,110,pStr,strlen(pStr));//вывод текста об обновлении экземпляра DirectDraw
sprintf(Str,"pDirectDraw7=%p",pDirectDraw7);
TextOut(hDC,420,110,Str,strlen(Str));//вывод текста об обновлении экземпляра DirectDraw
sprintf(Str,"Width=%i Height=%u PixelFormat=%d RefreshRate=%d ",
ddSurfaceDesc.dwWidth,// разрешение по X
ddSurfaceDesc.dwHeight,// разрешение по Y
ddSurfaceDesc.ddpfPixelFormat.dwRGBBitCount,// бит на пиксель
ddSurfaceDesc.dwRefreshRate);//частота кадров
TextOut(hDC,10,130,Str,strlen(Str));//вывод текста о текущем режиме
// контроль изменения адресов поверхностей (Surface):
sprintf(Str,"&ddSurfaceDesc=%p &pPrimarySurface=%p pPrimarySurface=%p",&ddSurfaceDesc,&pPrimarySurface,pPrimarySurface);
TextOut(hDC,420,130,Str,strlen(Str));//вывод текста об обновлении &ddSurfaceDesc и &pPrimarySurface
pPrimarySurface->ReleaseDC(hDC);//удаляем GDI контекст
pPrimarySurface->Unlock(NULL);//прекращаем блокирование доступа к ПЕРВИЧНОЙ поверхности
// /*
//=!!!!=========
//Получение информации о графическом адаптере компьютера (о всех его графических драйверах и присоединенных к нему устройствах (акселераторах)
//DirectDrawEnumerateEx() - обычная API (НЕ ТРЕБУЕТ ИСПОЛЬЗОВАНИЯ pDirectDraw7->), объявлена (прототип) в ddraw.h
//(Для работы DirectDrawEnumerateEx() используется функция обратного вызова DDEnumCallbackEx(), созданная в этой программе)
if(nF1==3)//выводим по третьему нажатию на F1
{DirectDrawEnumerateEx( DDEnumCallbackEx,//имя функции обратного вызова(для вывода инф об очередном найденном результате поиска)
NULL,//не передаем дополнительную информации, передаваемой из программы непосредственно в функцию обратного вызова ( EnumModesCallbac() )
//0 //сообщать о всех драйверах и присоединенных к нему устройствах (акселераторах)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.