|
DirectX 7 编程初步(6) End If lastTime = DX.TickCount End If
'Draw Text to the backbuffer If bDrawText Then On Error Resume Next DDSBack.DrawText Xpos, Ypos, Msg(MsgIndex), False On Error GoTo 0 End If
MainForm.Form_Paint Wend
TerminateDX End End Sub
Function ExModeActive() As Boolean Dim TestCoopRes As Long TestCoopRes = Ddraw.TestCooperativeLevel Select Case TestCoopRes Case DDERR_NOEXCLUSIVEMODE ExModeActive = False Case DD_OK ExModeActive = True End Select End Function
Public Sub InitializeDX() MainForm.Left = 0 MainForm.Top = 0 MainForm.Height =640 * Screen.TwipsPerPixelY MainForm.Width = 480 * Screen.TwipsPerPixelX MainForm.Show
'建立DirectDraw对象 Set Ddraw = DX.DirectDrawCreate("") '设定DirectDraw对象的协作层 Ddraw.SetCooperativeLevel MainForm.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN ' DDSCL_NORMAL '设定显示模式位640×480×8位颜色 Ddraw.SetDisplayMode 640, 480, 8, 0, DDSDM_DEFAULT '设定DDSFrontDesc为主平面 With DDSFrontDesc .lFlags = DDSD_CAPS .ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE 'Or DDSCAPS_SYSTEMMEMORY End With
'设定DDSBackDesc为后台缓冲平面 With DDSBackDesc .ddsCaps.lCaps = DDSCAPS_SYSTEMMEMORY .lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT .lWidth = 640 .lHeight = 480 End With
'建立平面 Set DDSFront = Ddraw.CreateSurface(DDSFrontDesc) Set DDSBack = Ddraw.CreateSurface(DDSBackDesc) Set Clipper = Ddraw.CreateClipper(0) Clipper.SetHWnd MainForm.hWnd DDSFront.SetClipper Clipper DDSBack.SetClipper Clipper
DoEvents Exit Sub ERRoUT: If Not (Ddraw Is Nothing) Then Ddraw.RestoreDisplayMode Ddraw.SetCooperativeLevel MainForm.hWnd, DDSCL_NORMAL DoEvents End If MsgBox “无法对DirectDraw进行初始化 ”+Chr(13)+“也许你的显示卡不支持 640×480×8 显示模式 ” End End Sub
Public Sub TerminateDX() '子程序TerminateDX回复原来的显示模式并且释放所有的DirectDraw有关对象 Ddraw.RestoreDisplayMode
|