Поделиться через


Метод IDirectDraw7::SetCooperativeLevel (ddraw.h)

Определяет поведение приложения верхнего уровня.

Синтаксис

HRESULT SetCooperativeLevel(
  [in] HWND  unnamedParam1,
  [in] DWORD unnamedParam2
);

Параметры

[in] unnamedParam1

Дескриптор окна, используемый для приложения. Задайте для вызывающего приложения дескриптор окна верхнего уровня (а не дескриптор для дочерних окон, созданных окном верхнего уровня). Этот параметр может иметь значение NULL, если флаг DDSCL_NORMAL указан в параметре dwFlags.

[in] unnamedParam2

Это значение состоит из одного или нескольких следующих флагов:

DDSCL_ALLOWMODEX

Позволяет использовать режимы отображения режима X. Этот флаг можно использовать только в том случае, если присутствуют DDSCL_EXCLUSIVE и DDSCL_FULLSCREEN флаги.

DDSCL_ALLOWREBOOT

Позволяет CTRL+ALT+DEL функционировать в монопольном (полноэкранном) режиме.

DDSCL_CREATEDEVICEWINDOW

Этот флаг поддерживается только в Windows 98 и Windows 2000. Указывает, что DirectDraw создаст окно устройства по умолчанию для этого объекта DirectDraw и управляет ими.

DDSCL_EXCLUSIVE

Запрашивает монопольный уровень. Этот флаг должен использоваться с флагом DDSCL_FULLSCREEN.

DDSCL_FPUPRESERVE

Вызывающее приложение заботится о состоянии FPU и не хочет, чтобы Direct3D изменял его способами, видимыми для приложения. В этом режиме Direct3D сохраняет и восстанавливает состояние FPU при каждом изменении состояния FPU.

DDSCL_FPUSETUP

Вызывающее приложение, скорее всего, будет поддерживать настройку FPU для оптимальной производительности Direct3D (одноточие и исключения отключены), поэтому Direct3D не требует явного задания FPU каждый раз. Это состояние по умолчанию.

DDSCL_FULLSCREEN

Владелец монопольного режима отвечает за всю основную поверхность. GDI можно игнорировать. Этот флаг должен использоваться с флагом DDSCL_EXCLUSIVE.

DDSCL_MULTITHREADED

Запрашивает поведение DirectDraw с многопоточностью. Это приводит к тому, что Direct3D чаще принимает глобальный критический раздел.

DDSCL_NORMAL

Приложение работает как типичное приложение Windows. Этот флаг нельзя использовать с флагами DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE или DDSCL_FULLSCREEN.

DDSCL_NOWINDOWCHANGES

DirectDraw не допускается свернуть или восстановить окно приложения при активации.

DDSCL_SETDEVICEWINDOW

Этот флаг поддерживается только в Windows 98 и Windows 2000. Указывает, что параметр hWnd — это дескриптор окна устройства для этого объекта DirectDraw. Этот флаг нельзя использовать с флагом DDSCL_SETFOCUSWINDOW.

DDSCL_SETFOCUSWINDOW

Этот флаг поддерживается только в Windows 98 и Windows 2000. Указывает, что параметр hWnd является дескриптором окна фокуса для этого объекта DirectDraw. Этот флаг нельзя использовать с флагом DDSCL_SETDEVICEWINDOW.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение DD_OK.

В случае сбоя метод может вернуть одно из следующих значений ошибок:

  • DDERR_EXCLUSIVEMODEALREADYSET
  • DDERR_HWNDALREADYSET
  • DDERR_HWNDSUBCLASSED
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_OUTOFMEMORY

Замечания

Этот метод должен вызываться тем же потоком, который создал окно приложения.

Приложение должно задать либо DDSCL_EXCLUSIVE, либо флаг DDSCL_NORMAL.

Флаг DDSCL_EXCLUSIVE должен быть задан для вызова функций, которые могут негативно повлиять на производительность других приложений.

Взаимодействие между этим методом и методом IDirectDraw7::SetDisplayMode отличается от своих коллег IDirectDraw.

Если вы используете классы Microsoft Foundation (MFC), дескриптор окна, переданный этому методу, должен определить окно верхнего уровня приложения, а не производное дочернее окно. Чтобы получить дескриптор окна верхнего уровня приложения MFC, можно использовать следующий код:


HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();

Требования

Требование Ценность
целевая платформа Виндоус
заголовка ddraw.h
библиотеки Ddraw.lib
DLL Ddraw.dll

См. также

IDirectDraw7