Cooperative Levels
"Теория DirectDraw"
Уровни доступа (cooperative levels) описывают, как DirectDraw общается с дисплеем
и как он реагирует на события, которые могут повлиять на дисплей. Используйте
метод IDirectDraw7::SetCooperativeLevel (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 во множестве окон, IDirectDraw7::SetCooperativeLevel
(DirectDraw7.SetCooperativeLevel) не требует указателя на окно (window handle),
если приложение запрашивает режим DDSCL_NORMAL. Передавая NULL (Nothing) вместо
указателя окна, все окна могут быть одновременно использованы в нормальном режиме
Windows.
IDirectDraw7::SetCooperativeLevel (DirectDraw7.SetCooperativeLevel) поддерживает
связь между процессом и указателем окна. Если в процессе вызывается IDirectDraw7::SetCooperativeLevel
(DirectDraw7.SetCooperativeLevel) , устанавливается связь между процессом и
указателем окна, если этот метод опять вызывается в том же процессе, возвращается
код ошибки DDERR_HWNDALREADYSET. Некоторые приложения могут получать эту ошибку,
когда DirectSound указывает другой указатель окна, чем DirectDraw - они должны
указывать один указатель (простите за каламбур) top-level окна.
Posted: 23.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>
|