//Процедура копирования заднего буфера в главную поверхность
Flip(DWORD hWnd)
{
RECT  dstRect;
POINT Pt;
DWORD hRet;

  GetClientRect(hWnd, #dstRect);
  Pt.x= Pt.y= 0;
  ClientToScreen(hWnd, #Pt);
  OffsetRect(#dstRect, Pt.x, Pt.y);

COMETHOD(lpDD,#IDirectDraw.WaitForVerticalBlank,DDWAITVB_BLOCKEND, 0);

//--------------------------------------------------------
//Закрасим черным цветом клиентскую часть основного буфера
//fillSurface (lpddsprimary,0,63,0, 565);
//11111b=31 111111b=63  11111b=31  565 формат
//  R          G           B
//--------------------------------------------------------

hRet=COMETHOD(lpddsprimary,#IDirectDrawSurface.Blt,#dstRect,lpddbackbuffer, NULL, DDBLT_WAIT, NULL);
      IF (EAX==DD_OK) {
        //Проверяем закончен ли блит в поверхность
        hRet=COMETHOD(lpddsprimary,#IDirectDrawSurface.GetBltStatus,DDGBS_ISBLTDONE);
          WHILE (EAX <> DD_OK) hRet=COMETHOD(lpddsprimary,#IDirectDrawSurface.GetBltStatus,DDGBS_ISBLTDONE);
                       }

     //В случае потери поверхности
     IF (hRet==DDERR_SURFACELOST) RestoreAll();


}
