创建无关硬件的555或565格式的16bit的surface,请看以下代码
Public Sub InitDX(ByVal hWndMain As Long)
'Initialization procedure
Set objDD = objDX7.DirectDrawCreate("")
With objDD
.SetCooperativeLevel hWndMain, DDSCL_NORMAL
ddsd1.lFlags = DDSD_CAPS
ddsd1.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE
Set objDDPrimSurf = .CreateSurface(ddsd1)
ddsd2.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT Or DDSD_PIXELFORMAT Or DDSD_PITCH
ddsd2.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
ddsd2.lWidth = 256
ddsd2.lHeight = 240
ddsd2.lPitch = 2 * 256
ddsd2.ddpfPixelFormat.lFlags = DDPF_RGB
ddsd2.ddpfPixelFormat.lRGBBitCount = 8 * 2
ddsd2.ddpfPixelFormat.lRBitMask = 31744
ddsd2.ddpfPixelFormat.lGBitMask = 992
ddsd2.ddpfPixelFormat.lBBitMask = 31
Set objDDSurf = .CreateSurface(ddsd2)
Set ddClipper = .CreateClipper(0)
ddClipper.SetHWnd hWndMain
objDDPrimSurf.SetClipper ddClipper
End With
End Sub