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


Функция DdResetVisrgn (ddrawgdi.h)

[Эта функция может изменяться с каждой редакцией операционной системы. Вместо этого используйте Microsoft DirectDraw и Microsoft Direct3DAPIs; эти API изолируют приложения от таких изменений операционной системы и скрывают многие другие трудности, связанные с взаимодействием непосредственно с драйверами дисплея.]

Оболочка для функции NtGdiDdResetVisrgn и обеспечивает своевременную информацию в пользовательском режиме в области обрезки для окон на рабочем столе.

GdiEntry6 определяется как псевдоним для этой функции.

Синтаксис

BOOL DdResetVisrgn(
  LPDDRAWI_DDRAWSURFACE_LCL pSurfaceLocal,
  HWND                      hWnd
);

Параметры

pSurfaceLocal

Указатель на объект пользовательского режима любой поверхности, принадлежащей устройству DirectDraw, для которого требуется сбросить обрезку. Дополнительные сведения см. в документации по DDK.

hWnd

Зарезервировано.

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

В случае успешного выполнения эта функция возвращает значение TRUE; В противном случае возвращается значение FALSE.

Комментарии

Обрезка может асинхронно изменяться с точки зрения потоков пользовательского режима. Части режима ядра DirectDraw и интерфейса графических устройств Windows (GDI) поддерживают счетчик, который увеличивается при каждом изменении списка обрезки для всего рабочего стола. Вызов этой функции записывает этот счетчик с каждой существующей основной поверхностью DirectDraw в системе.

В любое время, когда одна из этих основных поверхностей изменяется операцией IDirectDrawSurface7::Blt или IDirectDrawSurface7::Lock (см. документацию по DDK), счетчик, записанный с поверхностью, сравнивается с глобальным счетчиком. Если эти значения отличаются, код ошибки DDERR_VISRGNCHANGED возвращается в код пользовательского режима. Затем код пользовательского режима повторно запросит текущую обрезку для рабочего стола, вызовет NtGdiDdResetVisrgn и повторно попытается применить IDirectDrawSurface7::Blt к основной поверхности с учетом новой обрезки. В конечном итоге обрезка, которая была выборка кода пользовательского режима, будет той же, что и текущая обрезка, принадлежащей режиму ядра, и IDirectDrawSurface7::Blt будет разрешено продолжить.

Приложениям рекомендуется использовать интерфейс IDirectDrawClipper или метод IDirect3DDevice8::P resent для обработки асинхронных изменений обрезки. Эти конструкции реализуют асинхронную обрезку автоматизированным и не зависящим от операционной системы способом.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ddrawgdi.h

См. также раздел

Поддержка клиентов нижнего уровня графики