Переключение поверхностей. После прорисовки данных во вторичном буфере необходимо переключить поверхности. В этот момент вторичная поверхность становится первичной и все, что было нарисовано во вторичной поверхности отображается на экране. Для переключения поверхностей используется метод Flip:
primsurf-> Flip (NULL, DDFLIP_WAIT)
В общем виде метод выглядит следующим образом:
HRESULT Flip (LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,
DWORD dwFlags)
Первый параметр - указатель на интерфейс поверхности, на которую нужно переключиться. Этот параметр эффективен, когда есть более двух сопряженных поверхностей, то есть более одного заднего буфера. В рассматриваемом случае, только один задний буфер, поэтому переключение может быть только на него, и этот параметр равен 0.
Второй параметр - это флаги переключения. Здесь можно указать только одно значение: ddflipwait.
Примеры копирования поверхностей.
Если картинка меньше, чем разрешение экрана, то ее нужно будет масштабировать, а это умеет делать метод Bit. Для масштабирования заданной поверхности с картинкой на весь экран метод Bit вызывается со следующими параметрами:
backsurf-> Blt (& dst, imagesurf 0, ddbltjwait, & bltfx)
Первый параметр задает параметры области приема. В рассматриваемом случае, область приема равна всему окну, поэтому изображение будет растянуто. Второй и третий параметры - это поверхность, с которой идет копирования и область, которую нужно взять из источника. В рассматриваемом примере, указанный ноль, а значит будет взята вся область. Четвертый - указатель на структуру, в которой задаются дополнительные параметры и эффекты копирования.