Для того, чтобы произвести операции с поверхностью, например, залить черным цветом, нам нужно поверхность заблокировать. Это понятно зачем нужно, чтобы в один и тот же момент не было два, например, потока, которые работают с поверхностью. После операций с ней нужно произвести разблокирование. Итак, как выглядит общая схема.
Lock Работа (рисуем, красим еще что то). Unlock
Смотрим описание Lock
Visual Basic Описание
Парамерты Ошибки Описание
Параметры Возвращаемое значение
Visual C++
Visual Basic
object.Lock(r As RECT, desc As DDSURFACEDESC2, flags As CONST_DDLOCKFLAGS, hnd As Long)
object
Объектная переменная к объекту DirectDrawSurface7.
r
RECT тип, который определяет прямоугольника который идентифицирует область блокируемой поверхности. Если RECT пустой, вся поверхность блокирована.
desc
DDSURFACEDESC2 тип, который будет заполнен подробностями относительно поверхности.
flags
Одна или большее количество констант CONST_DDLOCKFLAGS которые описывают тип блокировки, которую нужно выполнить.
hnd
Не используемый и должен быть установлен к 0.
Если вызов не успешен, то будет сгенерирована ошибка и код установлен в Err.Number. Одно из следующих значений.
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY
DDERR_SURFACEBUSY
DDERR_SURFACELOST
DDERR_WASSTILLDRAWING
Visual C++
HRESULT Lock
(
LPRECT lpDestRect,
LPDDSURFACEDESC2 lpDDSurfaceDesc,
DWORD dwFlags,
HANDLE hEvent
);
lpDestRect
Адрес структуры RECT, которая идентифицирует область поверхности которая блокируется. Если NULL, вся поверхность блокирована.
lpDDSurfaceDesc
Адрес структуры DDSURFACEDESC2, которая будет заполнена подробностями относительно поверхности.
dwFlags
Одна или большее количество констант DDLOCK_ которые описывают тип блокировки, которую нужно выполнить.
hEvent
Не используемый и должен быть установлен к NULL.
Если метод успешен, возвращаемое значение - DD_OK.
Если метод терпит неудачу, возвращается одна из следующих значений ошибки:
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY
DDERR_SURFACEBUSY
DDERR_SURFACELOST
DDERR_WASSTILLDRAWING