Метод 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 |