Cooperative Levels

"Теория DirectDraw"

<Уголок DirectX>


Уровни совместного доступа (cooperative levels) описывают, как DirectDraw общается с дисплеем и как он реагирует на события, которые могут повлиять на дисплей. Используйте метод DirectDraw7.SetCooperativeLevel для того, чтобы установить уровень совместного доступы для DirectDraw.
В большинстве случаев вы будете использовать Cooperative Level для определения режима в котором будет работать программа - полноэкранный с эксклюзивным доступом к экрану или же в оконном.

Однако Cooperative Level могут быть использован и для других случаев.

  • Использование режима экрана Mode X. (Для большей информации см. Mode X и Mode 13 режимы дисплея).
  • Предотвращения потери DirectDraw эксклюзивного контроля над дисплеем или перезагрузки компьютера по CAD (только в эксклюзивном режиме).
  • Разрешать DirectDraw минимизировать и максимизировать приложение в ответ на соответствующие события.

Нормальный cooperative level указывает на то, что приложение DirectDraw работает в оконном режиме. В этом уровне доступа, вы не можете менять палитры главной поверхности или применять page flipping. Ко всему этому, вы не сможете применять некоторые методы, которые чрезмерно влияют на дисплей или видеопамять.

В полноэкранном эксклюзивном режиме вы можете выжать из оборудования компьютера все, на что оно только способно. В этом режиме вы можете устанавливать пользовательские и динамические палитры, менять разрешение экрана, применять page flipping. Эксклюзивный (полноэкранный) режим не запрещает другим приложениям резервировать себе буфера или использовать DirectDraw или GDI. Но он запрещает им выполнять какие-либо операции, которые могут повлиять на состояние экрана или палитры.

Потому что приложения могут использовать DirectDraw во множестве окон, DirectDraw7.SetCooperativeLevel не требует указателя на окно (window handle), если приложение запрашивает режим DDSCL_NORMAL. Передавая NULL вместо указателя окна, все окна могут быть одновременно использованы в нормальном режиме Windows.

DirectDraw7.SetCooperativeLevel поддерживает связь между процессом и указателем окна. Если в процессе вызывается DirectDraw7.SetCooperativeLevel, устанавливается связь между процессом и указателем окна, если этот метод опять вызывается в том же процессе, возвращается код ошибки DDERR_HWNDALREADYSET. Некоторые приложения могут получать эту ошибку, когда DirectSound указывает другой указатель окна, чем DirectDraw - они должны указывать один указатель (простите за каламбур) top-level окна.


>>> Реклама <<<