1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| LPDIRECTDRAW7 lpDD=NULL;
LPDIRECTDRAWSURFACE7 lpDDSPrimary=NULL;
LPDIRECTDRAWSURFACE7 lpDDSSecondary=NULL;
LPDIRECTDRAWSURFACE7 lpDDSBack;
LPDIRECTDRAWCLIPPER lpClip=NULL;
DDSURFACEDESC2 ddsd;
DDSURFACEDESC2 ddsdOverlay;
DirectDrawCreateEx(NULL,(LPVOID*)&lpDD,IID_IDirectDraw7,NULL);
lpDD->SetCooperativeLevel(Form1->Handle,DDSCL_NORMAL);
lpDD->CreateClipper(NULL,&lpClip,NULL);
lpClip->SetHWnd(0,Form1->Handle);
ZeroMemory(&ddsd,sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
lpDDSPrimary->SetClipper(lpClip);
ddsdOverlay.ddsCaps.dwCaps = DDSCAPS_OVERLAY | DDSCAPS_FLIP | DDSCAPS_COMPLEX ;
ddsdOverlay.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_BACKBUFFERCOUNT | DDSD_PIXELFORMAT;
ddsdOverlay.dwBackBufferCount=1;
ddsdOverlay.dwHeight=240;
ddsdOverlay.dwWidth = 320;
DDPIXELFORMAT dd_format;
ZeroMemory(&dd_format, sizeof(dd_format));
dd_format.dwSize = sizeof(dd_format);
dd_format.dwFlags = DDPF_RGB;
dd_format.dwRGBBitCount = 32;
dd_format.dwRBitMask = 0x00FF0000;
dd_format.dwGBitMask = 0x0000FF00;
dd_format.dwBBitMask = 0x000000FF;
ddsdOverlay.ddpfPixelFormat=dd_format;
lpDD->CreateSurface(&ddsd,&lpDDSSecondary,NULL);
DDSCAPS2 ddscaps;
ZeroMemory(&ddscaps, sizeof(ddscaps));
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
lpDDSSecondary->GetAttachedSurface(&ddscaps,&lpDDSBack);
DDOVERLAYFX m_overlay_fx;
ZeroMemory(&m_overlay_fx, sizeof(m_overlay_fx));
m_overlay_fx.dwSize = sizeof(m_overlay_fx);
m_overlay_fx.dckDestColorkey.dwColorSpaceLowValue=0x00FF0000;
m_overlay_fx.dckDestColorkey.dwColorSpaceHighValue=0x00FF0000;
RECT dest_rect;
dest_rect.left = 0;
dest_rect.top = 0;
dest_rect.right = 200;
dest_rect.bottom = 300;
HDC dc;
lpDDSSecondary->GetDC(&dc);
AnsiString str="lklklkkkl";
SetTextColor(dc, RGB(255, 255, 255));
SetBkColor(dc, 0);
TextOut(dc, 5, 5, str.c_str(), str.Length());
lpDDSSecondary->ReleaseDC(dc);
lpDDSSecondary->Flip(0, DDFLIP_WAIT);
int m_overlay_flags = DDOVER_SHOW;;
lpDDSSecondary->UpdateOverlay(0, lpDDSPrimary, &dest_rect, m_overlay_flags, &m_overlay_fx); |
Partager