5edf7c19

DDSCL_NORMAL);


if

(ddrval!= DD_OK)

return;

Ddrval = lpDD- > QueryInterface (IID_IDirectDraw2,

(LPVOID *) &lpDD2);

if

(ddrval!= DD_OK)

return;

Ddscaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;

Ddrval = lpDD2- > GetAvailableVidMem (&ddscaps, &total,

&free);

if

(ddrval!= DD_OK)

return;

Этот пример показывает  синтаксис С++ для создания интерфейса IDirectDraw, который затем использует метод IDirectDraw:: QueryInterface, чтобы  создать интерфейс IDirectDraw2. Этот интерфейс содержит метод IDirectDraw2:: GetAvailableVidMem. Попытка использовать этот метод из интерфейса IDirectDraw кончится ошибкой компиляции.

В дополнение к методу IDirectDraw2:: GetAvailableVidMem , интерфейс IDirectDraw2 содержит все методы, обеспечиваемые в интерфейсе IDirectDraw. В этот интерфейс включены новые методы IDirectDraw2:: SetDisplayMode и IDirectDraw2:: EnumDisplayModes , которые позволяют определить частоты регенерации экрана. Если частоты регенерации не требуются, то можно использовать методы IDirectDraw:: SetDisplayMode и IDirectDraw:: EnumDisplayModes .

Взаимодействие между IDirectDraw:: SetCooperativeLevel и IDirectDraw:: SetDisplayMode немного отлично чем  между IDirectDraw2:: SetCooperativeLevel и IDirectDraw2:: SetDisplayMode. Если Вы используете интерфейс IDirectDraw, и прикладная программа получает исключительный режим,  вызывая IDirectDraw:: SetCooperativeLevel с флажком DDSCL_EXCLUSIVE, изменяет режим используя IDirectDraw:: SetDisplayMode, затем отменяет исключительный режим,  вызывая IDirectDraw:: SetCooperativeLevel с флажком DDSCL_NORMAL, первоначальный режим дисплея не будет восстановлен. Новый режим дисплея останется до вызова из прикладной программы метода IDirectDraw:: RestoreDisplayMode или удаления объекта DirectDraw. Однако, если Вы используете интерфейс IDirectDraw2, и прикладная программа пройдет теми же самыми шагами, первоначальный режим дисплея будет восстановлен, когда потеряет исключительный режим .



Начало  Назад  Вперед