Функция 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 |