Textoverlay in anderen Anwendungen (Spielen) ?

Anfängerfragen zum Programmieren mit PureBasic.
Glow
Beiträge: 45
Registriert: 31.01.2005 01:36

Textoverlay in anderen Anwendungen (Spielen) ?

Beitrag von Glow »

Hi

Ich experimentiere gerade damit rum, informationen in Spielen anzeigen zu lassen. Z.B die Uhrzeit einzublenden oder den aktuellen Winamp Titel oder was auch immer.
Das Problem ist, bei mir flackert der Text immer rum. Gibt es eine Möglichkeit Text als oberstete "Schicht" über allen anderen Anwendungen anzeigen zu lassen ? Dem normalen DrawText() scheint da irgendwie die Puste auszugehen ^^
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Also die ganze Thematik ist nicht leicht. Der beste Weg von dem ich gehöhrt habe, ist einen DirectX oder OpenGL Hook zu entwickeln, je nach Spiel.

Wenn du ein brauchbaren Code entwickelt hast, bitte unbedingt hier im Forum posten. Ich bin net der einzige der auf so einen Code brennend interessiert ist. :D
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Kannst du denn mal posten, was du bis jetzt überhaupt gefunden hast? Würde mich interessieren!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo,

ich habe mich vor ein paar Monaten mit den Thema Overlay beschäftigt. Allerdings hatte ich damals das Problem, dass er den Overlay nicht inGame anzeigt. Sobald ich ein Spiel starte (bei den meisten Spielen so, eine ausnahme stellt Counter-Strike 1 da), kommt es mir so vor als ob er das Overlay zerstören würde. Leider wusste ich damals nicht genau an was es lag. Ich poste hier mal den Source vll. wird sich jemand dranmachen und den Code fixen :lol:.

Gedacht war das Overlay wie gesagt zur Informationsausgabe in verschiedenen zukünftigen Programmen von mir wie dem kommenden PixPlayer oder für Dem0nZ. Dazu wollte ich das ganze in eine DLL Packen um es ein paar Leuten zu schicken die kein PB nutzen aber trotzdem interesse hätten.

Hier die 3 Codeteile:

ddovrl.pb

Code: Alles auswählen

DataSection

  IID_IDirectDraw7:
  Data.l $15E65EC0 
  Data.w $3B9C, $11D2 
  Data.b $B9, $2F, $00, $60, $97, $97, $EA, $5B

EndDataSection 


#DD_ROP_SPACE = 256/32


Structure DDCOLORKEY 
  dwColorSpaceLowValue.l 
  dwColorSpaceHighValue.l 
EndStructure 

Structure DDPIXELFORMAT 
  dwSize.l 
  dwFlags.l 
  dwFourCC.l 
  dwRGBBitCount.l 
  dwRBitMask.l 
  dwGBitMask.l 
  dwBBitMask.l 
  dwRGBAlphaBitMask.l 
EndStructure 

Structure DDSCAPS
  dwCaps.l
EndStructure

Structure DDSCAPS2 
  dwCaps.l 
  dwCaps2.l 
  dwCaps3.l 
  dwCaps4.l 
EndStructure 

Structure DDSURFACEDESC2 
  dwSize.l 
  dwFlags.l 
  dwHeight.l 
  dwWidth.l 
  lPitch.l 
  dwBackBufferCount.l 
  dwRefreshRate.l 
  dwAlphaBitDepth.l 
  dwReserved.l 
  lpSurface.l 
  ddckCKDestOverlay.DDCOLORKEY 
  ddckCKDestBlt.DDCOLORKEY 
  ddckCKSrcOverlay.DDCOLORKEY 
  ddckCKSrcBlt.DDCOLORKEY 
  ddpfPixelFormat.DDPIXELFORMAT 
  ddsCaps.DDSCAPS2 
  dwTextureStage.l 
EndStructure

Structure DDOVERLAYFX
  dwSize.l 
  dwAlphaEdgeBlendBitDepth.l 
  dwAlphaEdgeBlend.l 
  dwReserved.l
  dwAlphaDestConstBitDepth.l 
  
  StructureUnion
    dwAlphaDestConst.l
    lpDDSAlphaDest.IDirectDrawSurface7
  EndStructureUnion
  
  dwAlphaSrcConstBitDepth.l
  
  StructureUnion
    dwAlphaSrcConst.l
    lpDDSAlphaSrc.IDirectDrawSurface7
  EndStructureUnion

  dckDestColorkey.DDCOLORKEY
  dckSrcColorkey.DDCOLORKEY 
  dwDDFX.l 
  dwFlags.l
EndStructure 
 
Structure DDCAPS
  dwSize.l
  dwCaps.l
  dwCaps2.l
  dwCKeyCaps.l
  dwFXCaps.l
  dwFXAlphaCaps.l
  dwPalCaps.l
  dwSVCaps.l
  dwAlphaBltConstBitDepths.l
  dwAlphaBltPixelBitDepths.l
  dwAlphaBltSurfaceBitDepths.l
  dwAlphaOverlayConstBitDepths.l
  dwAlphaOverlayPixelBitDepths.l
  dwAlphaOverlaySurfaceBitDepths.l
  dwZBufferBitDepths.l
  dwVidMemTotal.l
  dwVidMemFree.l
  dwMaxVisibleOverlays.l
  dwCurrVisibleOverlays.l
  dwNumFourCCCodes.l
  dwAlignBoundarySrc.l
  dwAlignSizeSrc.l
  dwAlignBoundaryDest.l
  dwAlignSizeDest.l
  dwAlignStrideAlign.l
  dwRops.l[#DD_ROP_SPACE]
  ddsOldCaps.DDSCAPS 
  dwMinOverlayStretch.l
  dwMaxOverlayStretch.l
  dwMinLiveVideoStretch.l
  dwMaxLiveVideoStretch.l
  dwMinHwCodecStretch.l
  dwMaxHwCodecStretch.l
  dwReserved1.l
  dwReserved2.l
  dwReserved3.l
  dwSVBCaps.l
  dwSVBCKeyCaps.l
  dwSVBFXCaps.l
  dwSVBRops.l[#DD_ROP_SPACE]
  dwVSBCaps.l
  dwVSBCKeyCaps.l
  dwVSBFXCaps.l
  dwVSBRops.l[#DD_ROP_SPACE]
  dwSSBCaps.l
  dwSSBCKeyCaps.l
  dwSSBFXCaps.l
  dwSSBRops.l[#DD_ROP_SPACE]
  dwMaxVideoPorts.l
  dwCurrVideoPorts.l
  dwSVBCaps2.l
  dwNLVBCaps.l
  dwNLVBCaps2.l
  dwNLVBCKeyCaps.l
  dwNLVBFXCaps.l
  dwNLVBRops.l[#DD_ROP_SPACE]
  ddsCaps.DDSCAPS2
EndStructure


#DD_OK                              = $00000000
#DDSCL_NORMAL                       = $00000008
#DDPF_FOURCC                        = $00000004
#DDPF_RGB                           = $00000040
#DDOVER_SHOW                        = $00004000
#DDLOCK_WAIT                        = $00000001

#DDFLIP_WAIT                        = $00000001

#DDSD_CAPS                          = $00000001
#DDSD_HEIGHT                        = $00000002
#DDSD_WIDTH                         = $00000004
#DDSD_BACKBUFFERCOUNT               = $00000020
#DDSD_PIXELFORMAT                   = $00001000

#DDCAPS_OVERLAY                     = $00000800

#DDSCAPS_BACKBUFFER                 = $00000004
#DDSCAPS_COMPLEX                    = $00000008
#DDSCAPS_FLIP                       = $00000010
#DDSCAPS_OVERLAY                    = $00000080
#DDSCAPS_PRIMARYSURFACE             = $00000200
#DDSCAPS_VIDEOMEMORY                = $00004000

#DDCKEYCAPS_SRCOVERLAY              = $00002000

#DDOVER_KEYSRCOVERRIDE              = $00002000
#DDOVER_DDFX                        = $00080000

#DDERR_EXCLUSIVEMODEALREADYSET      = $88760245
#DDERR_WRONGMODE                    = $8876024B

Global m_direct_draw.IDirectDraw7
Global m_direct_draw_error.l
Global m_direct_draw_error_count.l
Global m_caps.DDCAPS
Global m_primary_surface.IDirectDrawSurface7
Global m_overlay_surface.IDirectDrawSurface7
Global m_overlay_flags.l
Global m_overlay_back_surface.IDirectDrawSurface7
Global m_overlay_fx.DDOVERLAYFX
Global m_PixelFormat.l
Global ddsd.DDSURFACEDESC2
Global m_surfaces_lost.b
Global OVERLAY_WIDTH, OVERLAY_HEIGHT

OVERLAY_WIDTH = 512
OVERLAY_HEIGHT = 20

Procedure Overlay_CheckError(Value)
  
  If Value = #DD_OK
    
    m_direct_draw_error_count + 1
    ProcedureReturn #DD_OK
    
  Else
    
    m_direct_draw_error_count + 1
    m_direct_draw_error = Value
    ProcedureReturn Value
    
  EndIf
  
EndProcedure

ProcedureDLL Overlay_Init()
  
  If OpenLibrary(0, "ddraw.dll")
    
    If CallFunction(0, "DirectDrawCreateEx", 0, @m_direct_draw, ?IID_IDirectDraw7, 0) = #DD_OK ; Command: 1
      
      m_caps\dwSize = SizeOf(DDCAPS)
      
      If Overlay_CheckError(m_direct_draw\GetCaps(@m_caps, 0)) = #DD_OK ; Command: 2
      
        ProcedureReturn RetVal = #True
        
      EndIf
      
    EndIf 
    
  EndIf
  
  ProcedureReturn RetVal
  
EndProcedure

ProcedureDLL Overlay_SupportAviable()
  
  num_visible_overlays.l = 0
  
  If m_overlay_surface
    
    num_visible_overlays = m_caps\dwCurrVisibleOverlays - 1
    
  EndIf
  
  If m_caps\dwMaxVisibleOverlays > num_visible_overlays And m_caps\dwCaps & #DDCAPS_OVERLAY
    
    RetVal = #True
    
  EndIf
  
  ProcedureReturn RetVal
  
EndProcedure  

ProcedureDLL Overlay_Init_Surfaces()
  
  If Overlay_CheckError(m_direct_draw\SetCooperativeLevel(0, #DDSCL_NORMAL)) = #DD_OK ; Command: 3
    
    ddsda.DDSURFACEDESC2
    ddsda\dwSize = SizeOf(DDSURFACEDESC2)
    ddsda\dwFlags = #DDSD_CAPS
    ddsda\ddsCaps\dwCaps = #DDSCAPS_PRIMARYSURFACE
    
    If Overlay_CheckError(m_direct_draw\CreateSurface(ddsda, @m_primary_surface, 0)) = #DD_OK ; Command: 4
  
      ddsd\dwSize = SizeOf(DDSURFACEDESC2)
      ddsd\dwFlags = #DDSD_CAPS | #DDSD_HEIGHT | #DDSD_WIDTH | #DDSD_BACKBUFFERCOUNT | #DDSD_PIXELFORMAT
      ddsd\ddsCaps\dwCaps = #DDSCAPS_OVERLAY | #DDSCAPS_FLIP | #DDSCAPS_COMPLEX | #DDSCAPS_VIDEOMEMORY
      ddsd\dwBackBufferCount = 1
      ddsd\dwWidth = OVERLAY_WIDTH
      ddsd\dwHeight = OVERLAY_HEIGHT
      
      ddsd\ddpfPixelFormat\dwSize = SizeOf(DDPIXELFORMAT)
      ddsd\ddpfPixelFormat\dwFlags = #DDPF_RGB
      
      ddsd\ddpfPixelFormat\dwRGBBitCount = 32
      ddsd\ddpfPixelFormat\dwRBitMask = $00FF0000
      ddsd\ddpfPixelFormat\dwGBitMask = $0000FF00
      ddsd\ddpfPixelFormat\dwBBitMask = $000000FF
      
      hr = m_direct_draw\CreateSurface(ddsd, @m_overlay_surface, 0)
      
      If hr <> #DD_OK
        
        ddsd\ddpfPixelFormat\dwRGBBitCount = 16 
        ddsd\ddpfPixelFormat\dwRBitMask = $F800 
        ddsd\ddpfPixelFormat\dwGBitMask = $07E0 
        ddsd\ddpfPixelFormat\dwBBitMask = $001F 
        hr = m_direct_draw\CreateSurface(ddsd, @m_overlay_surface, 0)
        m_PixelFormat = 1
        
      EndIf
      
      If hr <> #DD_OK
        ddsd\ddpfPixelFormat\dwRGBBitCount = 0 
        ddsd\ddpfPixelFormat\dwRBitMask = 0 
        ddsd\ddpfPixelFormat\dwGBitMask = 0 
        ddsd\ddpfPixelFormat\dwBBitMask = 0 
        ddsd\ddpfPixelFormat\dwFlags = #DDPF_FOURCC 
        ddsd\ddpfPixelFormat\dwFourCC = PeekL(@"UYVY")
        hr = m_direct_draw\CreateSurface(ddsd, @m_overlay_surface, 0)
        m_PixelFormat = 2
        
      EndIf
      
      If hr <> #DD_OK
        
        ddsd\ddpfPixelFormat\dwRGBBitCount = 0 
        ddsd\ddpfPixelFormat\dwRBitMask = 0 
        ddsd\ddpfPixelFormat\dwGBitMask = 0 
        ddsd\ddpfPixelFormat\dwBBitMask = 0 
        ddsd\ddpfPixelFormat\dwFlags = #DDPF_FOURCC 
        ddsd\ddpfPixelFormat\dwFourCC = PeekL(@"YUY2")
        hr = m_direct_draw\CreateSurface(ddsd, @m_overlay_surface, 0)
        m_PixelFormat = 3
        
      EndIf

      If Overlay_CheckError(hr) = #DD_OK ; Command: 5
        
        ddscaps.DDSCAPS2
        
        ddscaps\dwCaps = #DDSCAPS_BACKBUFFER
        
        If Overlay_CheckError(m_overlay_surface\GetAttachedSurface(ddscaps, @m_overlay_back_surface)) = #DD_OK ; Command: 6
          
          RetVal = #True
          
        EndIf
        
        m_overlay_fx\dwSize = SizeOf(DDOVERLAYFX)
        
      EndIf
  
    EndIf
      
  EndIf
  
  ProcedureReturn RetVal
  
EndProcedure

ProcedureDLL Overlay_Clean()
  
  m_primary_surface\Release()
  m_overlay_surface\Release()
  ;m_direct_draw\Release()
  m_surfaces_lost = #False
  ProcedureReturn #True
  
EndProcedure

ProcedureDLL Overlay_Show(String.s)
  
  hr = Overlay_CheckError(m_direct_draw\TestCooperativeLevel()) = #DD_OK
  
  If hr <> #DD_OK
    
    Select hr
      
      Case #DDERR_EXCLUSIVEMODEALREADYSET

        m_surfaces_lost = #True
        Delay(1000)
        ProcedureReturn #False
         
      Case #DDERR_WRONGMODE
        
        Overlay_Clean()
        Overlay_Init_Surfaces()
      
      Default
        
        MessageRequester("", Hex(hr))
        
    EndSelect    
    
  Else  
    
    If m_surfaces_lost

      m_direct_draw\RestoreAllSurfaces()
      m_surfaces_lost = #False
      
    EndIf
    
    hdc = CreateDC_("DISPLAY", 0, 0, 0)
    mdc = CreateCompatibleDC_(0)
    bdc = CreateCompatibleBitmap_(hdc, OVERLAY_WIDTH, OVERLAY_HEIGHT)
    
    SelectObject_(mdc, bdc)
    font.l = CreateFont_(13, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 0, "Tahoma")
    
    SetBkMode_(mdc, #True)
    SelectObject_(mdc, font)
    Rectangle_(mdc, 0, 0, OVERLAY_WIDTH, OVERLAY_HEIGHT)
    SetTextColor_(mdc, RGB(150, 150, 150))
    TextOut_(mdc, 6, 3, @String, Len(String)) 
    SetTextColor_(mdc, RGB(255, 0, 0))
    TextOut_(mdc, 5, 2, @String, Len(String))
    DeleteObject_(font)
    
    If m_PixelFormat = 0 Or m_PixelFormat = 1
      
      If Overlay_CheckError(m_overlay_back_surface\GetDC(@dc)) = #DD_OK ; Command: 7
        
        BitBlt_(dc, 0, 0, OVERLAY_WIDTH, OVERLAY_HEIGHT, mdc, 0, 0, #SRCCOPY)
        Overlay_CheckError(m_overlay_back_surface\ReleaseDC(dc)) ; Command: 8
        
      EndIf
      
    Else

      If Overlay_CheckError(m_overlay_back_surface\Lock(0, ddsd, #DDLOCK_WAIT, 0)) = #DD_OK ; Command: 7 
        
        Addr = ddsd\lpSurface 
        Pitch = ddsd\lPitch 
        
        For y = 0 To OVERLAY_HEIGHT - 1
        
          For x = 0 To OVERLAY_WIDTH - 1 Step 2 
            
            C1 = GetPixel_(mdc, x, y)
            C2 = GetPixel_(mdc, x + 1, y)
            
            Y0 = (Red(C1) * 29 + Green(C1) * 57 + Blue(C1) * 14) / 100 
            U0 = 128 + (- Red(C1) * 14 - Green(C1) * 29 + Blue(C1) * 43) / 100 
            V0 = 128 + (Red(C1) * 36 - Green(C1) * 29 - Blue(C1) * 07) / 100 
            
            Y1 = (Red(C2) * 29 + Green(C2) * 57 + Blue(C2) * 14) / 100 
            U1 = 128 + (- Red(C2) * 14 - Green(C2) * 29 + Blue(C2) * 43) / 100 
            V1 = 128 + (Red(C2) * 36 - Green(C2) * 29 - Blue(C2) *07) / 100 
            
            Select m_PixelFormat
        
              Case 2

                PokeL(Addr, Y1 << 24 + ((V0 + V1) / 2) << 16 + Y0 << 8 + (U0 + U1) / 2) : Addr + 4
                
              Case 3
        
                PokeL(Addr, ((V0 + V1) / 2) << 24 + Y1 << 16 + ((U0 + U1) / 2) << 8 + Y0) : Addr + 4
        
            EndSelect 
            
          Next
          
          Addr + (Pitch - OVERLAY_WIDTH * 2)
          
        Next 
        
        Overlay_CheckError(m_overlay_back_surface\UnLock(0)) ; Command: 8
        
      EndIf
      
    EndIf
    
    If Overlay_CheckError(m_overlay_surface\Flip(0, #DDFLIP_WAIT)) = #DD_OK ; Command: 9
      
      dest_rect.RECT
      dest_rect\left   = 10
      dest_rect\top    = 10
      dest_rect\right  = 10 + OVERLAY_WIDTH
      dest_rect\bottom = 10 + OVERLAY_HEIGHT
      
      m_overlay_flags = #DDOVER_SHOW
      
      If m_caps\dwCKeyCaps & #DDCKEYCAPS_SRCOVERLAY
        
        m_overlay_fx\dckDestColorkey\dwColorSpaceLowValue = 0
        m_overlay_fx\dckDestColorkey\dwColorSpaceHighValue = 0
        m_overlay_flags = m_overlay_flags | #DDOVER_DDFX | #DDOVER_KEYSRCOVERRIDE
        
      EndIf
  
      If Overlay_CheckError(m_overlay_surface\UpdateOverlay(0, m_primary_surface, dest_rect, m_overlay_flags, m_overlay_fx)) = #DD_OK ; Command: 10
        
        RetVal = #True
        
      EndIf
      
    EndIf
      
  EndIf
  
  ProcedureReturn RetVal
  
EndProcedure

ProcedureDLL Overlay_GetLastError()
  
  ProcedureReturn m_direct_draw_error
  
EndProcedure

ProcedureDLL Overlay_GetErrorCount()
  
  ProcedureReturn m_direct_draw_error_count
  
EndProcedure 
dderrr.pb

Code: Alles auswählen

#DD_OK                              = $00000000

#DDERR_ALREADYINITIALIZED           = $88760005 
#DDERR_BLTFASTCANTCLIP              = $8876023E 
#DDERR_CANNOTATTACHSURFACE          = $8876000A 
#DDERR_CANNOTDETACHSURFACE          = $88760014 
#DDERR_CANTCREATEDC                 = $88760249 
#DDERR_CANTDUPLICATE                = $88760247 
#DDERR_CANTLOCKSURFACE              = $887601B3 
#DDERR_CANTPAGELOCK                 = $88760280 
#DDERR_CANTPAGEUNLOCK               = $88760294 
#DDERR_CLIPPERISUSINGHWND           = $88760237 
#DDERR_COLORKEYNOTSET               = $88760190 
#DDERR_CURRENTLYNOTAVAIL            = $88760028 
#DDERR_DCALREADYCREATED             = $8876026C 
#DDERR_DEVICEDOESNTOWNSURFACE       = $887602BB 
#DDERR_DIRECTDRAWALREADYCREATED     = $88760232 
#DDERR_EXCEPTION                    = $88760037 
#DDERR_EXCLUSIVEMODEALREADYSET      = $88760245 
#DDERR_EXPIRED                      = $887602B3 
#DDERR_GENERIC                      = $80004005 
#DDERR_HEIGHTALIGN                  = $8876005A 
#DDERR_HWNDALREADYSET               = $8876023B 
#DDERR_HWNDALREADYSET               = $8876023B 
#DDERR_HWNDSUBCLASSED               = $8876023A 
#DDERR_IMPLICITLYCREATED            = $8876024C 
#DDERR_INCOMPATIBLEPRIMARY          = $8876005F 
#DDERR_INVALIDCAPS                  = $88760064 
#DDERR_INVALIDCLIPLIST              = $8876006E 
#DDERR_INVALIDDIRECTDRAWGUID        = $88760231 
#DDERR_INVALIDMODE                  = $88760078 
#DDERR_INVALIDOBJECT                = $88760082 
#DDERR_INVALIDPARAMS                = $00000005 
#DDERR_INVALIDPIXELFORMAT           = $88760091 
#DDERR_INVALIDPOSITION              = $88760243 
#DDERR_INVALIDRECT                  = $88760096 
#DDERR_INVALIDSTREAM                = $88760209 
#DDERR_INVALIDSURFACETYPE           = $88760250 
#DDERR_LOCKEDSURFACES               = $887600A0 
#DDERR_MOREDATA                     = $887602B2 
#DDERR_NO3D                         = $887600AA 
#DDERR_NOALPHAHW                    = $887600B4 
#DDERR_NOBLTHW                      = $8876023F 
#DDERR_NOCLIPLIST                   = $887600CD 
#DDERR_NOCLIPPERATTACHED            = $88760238 
#DDERR_NOCOLORCONVHW                = $887600D2 
#DDERR_NOCOLORKEY                   = $887600D7 
#DDERR_NOCOLORKEYHW                 = $887600DC 
#DDERR_NOCOOPERATIVELEVELSET        = $887600D4 
#DDERR_NODC                         = $8876024A 
#DDERR_NODDROPSHW                   = $88760240 
#DDERR_NODIRECTDRAWHW               = $88760233 
#DDERR_NODIRECTDRAWSUPPORT          = $887600DE 
#DDERR_NOEMULATION                  = $88760235 
#DDERR_NOEXCLUSIVEMODE              = $887600E1 
#DDERR_NOFLIPHW                     = $887600E6 
#DDERR_NOFOCUSWINDOW                = $8876025A 
#DDERR_NOGDI                        = $887600F0 
#DDERR_NOHWND                       = $88760239 
#DDERR_NOMIPMAPHW                   = $8876024F 
#DDERR_NOMIRRORHW                   = $887600FA 
#DDERR_NONONLOCALVIDMEM             = $88760276 
#DDERR_NOOPTIMIZEHW                 = $88760258 
#DDERR_NOOVERLAYDEST                = $88760242 
#DDERR_NOOVERLAYHW                  = $88760104 
#DDERR_NOPALETTEATTACHED            = $8876023C 
#DDERR_NOPALETTEHW                  = $8876023D 
#DDERR_NORASTEROPHW                 = $88760118 
#DDERR_NOROTATIONHW                 = $88760122 
#DDERR_NOSTEREOHARDWARE             = $887600B5 
#DDERR_NOSTRETCHHW                  = $88760136 
#DDERR_NOSURFACELEFT                = $887600B6 
#DDERR_NOT4BITCOLOR                 = $8876013C 
#DDERR_NOT4BITCOLORINDEX            = $8876013D 
#DDERR_NOT8BITCOLOR                 = $88760140 
#DDERR_NOTAOVERLAYSURFACE           = $88760244 
#DDERR_NOTEXTUREHW                  = $8876014A 
#DDERR_NOTFLIPPABLE                 = $88760246 
#DDERR_NOTFOUND                     = $887600FF 
#DDERR_NOTINITIALIZED               = $800401F0 
#DDERR_NOTLOADED                    = $88760259 
#DDERR_NOTLOCKED                    = $88760248 
#DDERR_NOTPAGELOCKED                = $887602A8 
#DDERR_NOTPALETTIZED                = $8876024D 
#DDERR_NOVSYNCHW                    = $8876014F 
#DDERR_NOZBUFFERHW                  = $88760154 
#DDERR_NOZOVERLAYHW                 = $8876015E 
#DDERR_OUTOFCAPS                    = $88760168 
#DDERR_OUTOFMEMORY                  = $00000007 
#DDERR_OUTOFVIDEOMEMORY             = $8876017C 
#DDERR_OVERLAPPINGRECTS             = $8876010E 
#DDERR_OVERLAYCANTCLIP              = $8876017E 
#DDERR_OVERLAYCOLORKEYONLYONEACTIVE = $88760180 
#DDERR_OVERLAYNOTVISIBLE            = $88760241 
#DDERR_PALETTEBUSY                  = $88760183 
#DDERR_PRIMARYSURFACEALREADYEXISTS  = $88760234 
#DDERR_REGIONTOOSMALL               = $88760236 
#DDERR_SURFACEALREADYATTACHED       = $8876019A 
#DDERR_SURFACEALREADYDEPENDENT      = $887601A4 
#DDERR_SURFACEBUSY                  = $887601AE 
#DDERR_SURFACEISOBSCURED            = $887601B8 
#DDERR_SURFACELOST                  = $887601C2 
#DDERR_SURFACENOTATTACHED           = $887601CC 
#DDERR_TOOBIGHEIGHT                 = $887601D6 
#DDERR_TOOBIGSIZE                   = $887601E0 
#DDERR_TOOBIGWIDTH                  = $887601EA 
#DDERR_UNSUPPORTED                  = $80004001 
#DDERR_UNSUPPORTEDFORMAT            = $887601FE 
#DDERR_UNSUPPORTEDMASK              = $88760208 
#DDERR_UNSUPPORTEDMODE              = $8876024E 
#DDERR_VERTICALBLANKINPROGRESS      = $88760219 
#DDERR_VIDEONOTACTIVE               = $887602B7 
#DDERR_WASSTILLDRAWING              = $8876021C 
#DDERR_WRONGMODE                    = $8876024B 
#DDERR_XALIGN                       = $88760230

Procedure DDErrC(Value)
  
  If Value <> #DD_OK
    
    Select Value
      
      Case #DDERR_ALREADYINITIALIZED : RetErr$ = "DDERR_ALREADYINITIALIZED (0x" + Hex(#DDERR_ALREADYINITIALIZED) + ")"
      Case #DDERR_BLTFASTCANTCLIP : RetErr$ = "DDERR_BLTFASTCANTCLIP (0x" + Hex(#DDERR_BLTFASTCANTCLIP) + ")"
      Case #DDERR_CANNOTATTACHSURFACE : RetErr$ = "DDERR_CANNOTATTACHSURFACE (0x" + Hex(#DDERR_CANNOTATTACHSURFACE) + ")"
      Case #DDERR_CANNOTDETACHSURFACE : RetErr$ = "DDERR_CANNOTDETACHSURFACE (0x" + Hex(#DDERR_CANNOTDETACHSURFACE) + ")"
      Case #DDERR_CANTCREATEDC : RetErr$ = "DDERR_CANTCREATEDC (0x" + Hex(#DDERR_CANTCREATEDC) + ")"
      Case #DDERR_CANTDUPLICATE : RetErr$ = "DDERR_CANTDUPLICATE (0x" + Hex(#DDERR_CANTDUPLICATE) + ")"
      Case #DDERR_CANTLOCKSURFACE : RetErr$ = "DDERR_CANTLOCKSURFACE (0x" + Hex(#DDERR_CANTLOCKSURFACE) + ")"
      Case #DDERR_CANTPAGELOCK : RetErr$ = "DDERR_CANTPAGELOCK (0x" + Hex(#DDERR_CANTPAGELOCK) + ")"
      Case #DDERR_CANTPAGEUNLOCK : RetErr$ = "DDERR_CANTPAGEUNLOCK (0x" + Hex(#DDERR_CANTPAGEUNLOCK) + ")"
      Case #DDERR_CLIPPERISUSINGHWND : RetErr$ = "DDERR_CLIPPERISUSINGHWND (0x" + Hex(#DDERR_CLIPPERISUSINGHWND) + ")"
      Case #DDERR_COLORKEYNOTSET : RetErr$ = "DDERR_COLORKEYNOTSET (0x" + Hex(#DDERR_COLORKEYNOTSET) + ")"
      Case #DDERR_CURRENTLYNOTAVAIL : RetErr$ = "DDERR_CURRENTLYNOTAVAIL (0x" + Hex(#DDERR_CURRENTLYNOTAVAIL) + ")"
      Case #DDERR_DCALREADYCREATED : RetErr$ = "DDERR_DCALREADYCREATED (0x" + Hex(#DDERR_DCALREADYCREATED) + ")"
      Case #DDERR_DEVICEDOESNTOWNSURFACE : RetErr$ = "DDERR_DEVICEDOESNTOWNSURFACE (0x" + Hex(#DDERR_DEVICEDOESNTOWNSURFACE) + ")"
      Case #DDERR_DIRECTDRAWALREADYCREATED : RetErr$ = "DDERR_DIRECTDRAWALREADYCREATED (0x" + Hex(#DDERR_DIRECTDRAWALREADYCREATED) + ")"
      Case #DDERR_EXCEPTION : RetErr$ = "DDERR_EXCEPTION (0x" + Hex(#DDERR_EXCEPTION) + ")"
      Case #DDERR_EXCLUSIVEMODEALREADYSET : RetErr$ = "DDERR_EXCLUSIVEMODEALREADYSET (0x" + Hex(#DDERR_EXCLUSIVEMODEALREADYSET) + ")"
      Case #DDERR_EXPIRED : RetErr$ = "DDERR_EXPIRED (0x" + Hex(#DDERR_EXPIRED) + ")"
      Case #DDERR_GENERIC : RetErr$ = "DDERR_GENERIC (0x" + Hex(#DDERR_GENERIC) + ")"
      Case #DDERR_HEIGHTALIGN : RetErr$ = "DDERR_HEIGHTALIGN (0x" + Hex(#DDERR_HEIGHTALIGN) + ")"
      Case #DDERR_HWNDALREADYSET : RetErr$ = "DDERR_HWNDALREADYSET (0x" + Hex(#DDERR_HWNDALREADYSET) + ")"
      Case #DDERR_HWNDALREADYSET : RetErr$ = "DDERR_HWNDALREADYSET (0x" + Hex(#DDERR_HWNDALREADYSET) + ")"
      Case #DDERR_HWNDSUBCLASSED : RetErr$ = "DDERR_HWNDSUBCLASSED (0x" + Hex(#DDERR_HWNDSUBCLASSED) + ")"
      Case #DDERR_IMPLICITLYCREATED : RetErr$ = "DDERR_IMPLICITLYCREATED (0x" + Hex(#DDERR_IMPLICITLYCREATED) + ")"
      Case #DDERR_INCOMPATIBLEPRIMARY : RetErr$ = "DDERR_INCOMPATIBLEPRIMARY (0x" + Hex(#DDERR_INCOMPATIBLEPRIMARY) + ")"
      Case #DDERR_INVALIDCAPS : RetErr$ = "DDERR_INVALIDCAPS (0x" + Hex(#DDERR_INVALIDCAPS) + ")"
      Case #DDERR_INVALIDCLIPLIST : RetErr$ = "DDERR_INVALIDCLIPLIST (0x" + Hex(#DDERR_INVALIDCLIPLIST) + ")"
      Case #DDERR_INVALIDDIRECTDRAWGUID : RetErr$ = "DDERR_INVALIDDIRECTDRAWGUID (0x" + Hex(#DDERR_INVALIDDIRECTDRAWGUID) + ")"
      Case #DDERR_INVALIDMODE : RetErr$ = "DDERR_INVALIDMODE (0x" + Hex(#DDERR_INVALIDMODE) + ")"
      Case #DDERR_INVALIDOBJECT : RetErr$ = "DDERR_INVALIDOBJECT (0x" + Hex(#DDERR_INVALIDOBJECT) + ")"
      Case #DDERR_INVALIDPARAMS : RetErr$ = "DDERR_INVALIDPARAMS (0x" + Hex(#DDERR_INVALIDPARAMS) + ")"
      Case #DDERR_INVALIDPIXELFORMAT : RetErr$ = "DDERR_INVALIDPIXELFORMAT (0x" + Hex(#DDERR_INVALIDPIXELFORMAT) + ")"
      Case #DDERR_INVALIDPOSITION : RetErr$ = "DDERR_INVALIDPOSITION (0x" + Hex(#DDERR_INVALIDPOSITION) + ")"
      Case #DDERR_INVALIDRECT : RetErr$ = "DDERR_INVALIDRECT (0x" + Hex(#DDERR_INVALIDRECT) + ")"
      Case #DDERR_INVALIDSTREAM : RetErr$ = "DDERR_INVALIDSTREAM (0x" + Hex(#DDERR_INVALIDSTREAM) + ")"
      Case #DDERR_INVALIDSURFACETYPE : RetErr$ = "DDERR_INVALIDSURFACETYPE (0x" + Hex(#DDERR_INVALIDSURFACETYPE) + ")"
      Case #DDERR_LOCKEDSURFACES : RetErr$ = "DDERR_LOCKEDSURFACES (0x" + Hex(#DDERR_LOCKEDSURFACES) + ")"
      Case #DDERR_MOREDATA : RetErr$ = "DDERR_MOREDATA (0x" + Hex(#DDERR_MOREDATA) + ")"
      Case #DDERR_NO3D : RetErr$ = "DDERR_NO3D (0x" + Hex(#DDERR_NO3D) + ")"
      Case #DDERR_NOALPHAHW : RetErr$ = "DDERR_NOALPHAHW (0x" + Hex(#DDERR_NOALPHAHW) + ")"
      Case #DDERR_NOBLTHW : RetErr$ = "DDERR_NOBLTHW (0x" + Hex(#DDERR_NOBLTHW) + ")"
      Case #DDERR_NOCLIPLIST : RetErr$ = "DDERR_NOCLIPLIST (0x" + Hex(#DDERR_NOCLIPLIST) + ")"
      Case #DDERR_NOCLIPPERATTACHED : RetErr$ = "DDERR_NOCLIPPERATTACHED (0x" + Hex(#DDERR_NOCLIPPERATTACHED) + ")"
      Case #DDERR_NOCOLORCONVHW : RetErr$ = "DDERR_NOCOLORCONVHW (0x" + Hex(#DDERR_NOCOLORCONVHW) + ")"
      Case #DDERR_NOCOLORKEY : RetErr$ = "DDERR_NOCOLORKEY (0x" + Hex(#DDERR_NOCOLORKEY) + ")"
      Case #DDERR_NOCOLORKEYHW : RetErr$ = "DDERR_NOCOLORKEYHW (0x" + Hex(#DDERR_NOCOLORKEYHW) + ")"
      Case #DDERR_NOCOOPERATIVELEVELSET : RetErr$ = "DDERR_NOCOOPERATIVELEVELSET (0x" + Hex(#DDERR_NOCOOPERATIVELEVELSET) + ")"
      Case #DDERR_NODC : RetErr$ = "DDERR_NODC (0x" + Hex(#DDERR_NODC) + ")"
      Case #DDERR_NODDROPSHW : RetErr$ = "DDERR_NODDROPSHW (0x" + Hex(#DDERR_NODDROPSHW) + ")"
      Case #DDERR_NODIRECTDRAWHW : RetErr$ = "DDERR_NODIRECTDRAWHW (0x" + Hex(#DDERR_NODIRECTDRAWHW) + ")"
      Case #DDERR_NODIRECTDRAWSUPPORT : RetErr$ = "DDERR_NODIRECTDRAWSUPPORT (0x" + Hex(#DDERR_NODIRECTDRAWSUPPORT) + ")"
      Case #DDERR_NOEMULATION : RetErr$ = "DDERR_NOEMULATION (0x" + Hex(#DDERR_NOEMULATION) + ")"
      Case #DDERR_NOEXCLUSIVEMODE : RetErr$ = "DDERR_NOEXCLUSIVEMODE (0x" + Hex(#DDERR_NOEXCLUSIVEMODE) + ")"
      Case #DDERR_NOFLIPHW : RetErr$ = "DDERR_NOFLIPHW (0x" + Hex(#DDERR_NOFLIPHW) + ")"
      Case #DDERR_NOFOCUSWINDOW : RetErr$ = "DDERR_NOFOCUSWINDOW (0x" + Hex(#DDERR_NOFOCUSWINDOW) + ")"
      Case #DDERR_NOGDI : RetErr$ = "DDERR_NOGDI (0x" + Hex(#DDERR_NOGDI) + ")"
      Case #DDERR_NOHWND : RetErr$ = "DDERR_NOHWND (0x" + Hex(#DDERR_NOHWND) + ")"
      Case #DDERR_NOMIPMAPHW : RetErr$ = "DDERR_NOMIPMAPHW (0x" + Hex(#DDERR_NOMIPMAPHW) + ")"
      Case #DDERR_NOMIRRORHW : RetErr$ = "DDERR_NOMIRRORHW (0x" + Hex(#DDERR_NOMIRRORHW) + ")"
      Case #DDERR_NONONLOCALVIDMEM : RetErr$ = "DDERR_NONONLOCALVIDMEM (0x" + Hex(#DDERR_NONONLOCALVIDMEM) + ")"
      Case #DDERR_NOOPTIMIZEHW : RetErr$ = "DDERR_NOOPTIMIZEHW (0x" + Hex(#DDERR_NOOPTIMIZEHW) + ")"
      Case #DDERR_NOOVERLAYDEST : RetErr$ = "DDERR_NOOVERLAYDEST (0x" + Hex(#DDERR_NOOVERLAYDEST) + ")"
      Case #DDERR_NOOVERLAYHW : RetErr$ = "DDERR_NOOVERLAYHW (0x" + Hex(#DDERR_NOOVERLAYHW) + ")"
      Case #DDERR_NOPALETTEATTACHED : RetErr$ = "DDERR_NOPALETTEATTACHED (0x" + Hex(#DDERR_NOPALETTEATTACHED) + ")"
      Case #DDERR_NOPALETTEHW : RetErr$ = "DDERR_NOPALETTEHW (0x" + Hex(#DDERR_NOPALETTEHW) + ")"
      Case #DDERR_NORASTEROPHW : RetErr$ = "DDERR_NORASTEROPHW (0x" + Hex(#DDERR_NORASTEROPHW) + ")"
      Case #DDERR_NOROTATIONHW : RetErr$ = "DDERR_NOROTATIONHW (0x" + Hex(#DDERR_NOROTATIONHW) + ")"
      Case #DDERR_NOSTEREOHARDWARE : RetErr$ = "DDERR_NOSTEREOHARDWARE (0x" + Hex(#DDERR_NOSTEREOHARDWARE) + ")"
      Case #DDERR_NOSTRETCHHW : RetErr$ = "DDERR_NOSTRETCHHW (0x" + Hex(#DDERR_NOSTRETCHHW) + ")"
      Case #DDERR_NOSURFACELEFT : RetErr$ = "DDERR_NOSURFACELEFT (0x" + Hex(#DDERR_NOSURFACELEFT) + ")"
      Case #DDERR_NOT4BITCOLOR : RetErr$ = "DDERR_NOT4BITCOLOR (0x" + Hex(#DDERR_NOT4BITCOLOR) + ")"
      Case #DDERR_NOT4BITCOLORINDEX : RetErr$ = "DDERR_NOT4BITCOLORINDEX (0x" + Hex(#DDERR_NOT4BITCOLORINDEX) + ")"
      Case #DDERR_NOT8BITCOLOR : RetErr$ = "DDERR_NOT8BITCOLOR (0x" + Hex(#DDERR_NOT8BITCOLOR) + ")"
      Case #DDERR_NOTAOVERLAYSURFACE : RetErr$ = "DDERR_NOTAOVERLAYSURFACE (0x" + Hex(#DDERR_NOTAOVERLAYSURFACE) + ")"
      Case #DDERR_NOTEXTUREHW : RetErr$ = "DDERR_NOTEXTUREHW (0x" + Hex(#DDERR_NOTEXTUREHW) + ")"
      Case #DDERR_NOTFLIPPABLE : RetErr$ = "DDERR_NOTFLIPPABLE (0x" + Hex(#DDERR_NOTFLIPPABLE) + ")"
      Case #DDERR_NOTFOUND : RetErr$ = "DDERR_NOTFOUND (0x" + Hex(#DDERR_NOTFOUND) + ")"
      Case #DDERR_NOTINITIALIZED : RetErr$ = "DDERR_NOTINITIALIZED (0x" + Hex(#DDERR_NOTINITIALIZED) + ")"
      Case #DDERR_NOTLOADED : RetErr$ = "DDERR_NOTLOADED (0x" + Hex(#DDERR_NOTLOADED) + ")"
      Case #DDERR_NOTLOCKED : RetErr$ = "DDERR_NOTLOCKED (0x" + Hex(#DDERR_NOTLOCKED) + ")"
      Case #DDERR_NOTPAGELOCKED : RetErr$ = "DDERR_NOTPAGELOCKED (0x" + Hex(#DDERR_NOTPAGELOCKED) + ")"
      Case #DDERR_NOTPALETTIZED : RetErr$ = "DDERR_NOTPALETTIZED (0x" + Hex(#DDERR_NOTPALETTIZED) + ")"
      Case #DDERR_NOVSYNCHW : RetErr$ = "DDERR_NOVSYNCHW (0x" + Hex(#DDERR_NOVSYNCHW) + ")"
      Case #DDERR_NOZBUFFERHW : RetErr$ = "DDERR_NOZBUFFERHW (0x" + Hex(#DDERR_NOZBUFFERHW) + ")"
      Case #DDERR_NOZOVERLAYHW : RetErr$ = "DDERR_NOZOVERLAYHW (0x" + Hex(#DDERR_NOZOVERLAYHW) + ")"
      Case #DDERR_OUTOFCAPS : RetErr$ = "DDERR_OUTOFCAPS (0x" + Hex(#DDERR_OUTOFCAPS) + ")"
      Case #DDERR_OUTOFMEMORY : RetErr$ = "DDERR_OUTOFMEMORY (0x" + Hex(#DDERR_OUTOFMEMORY) + ")"
      Case #DDERR_OUTOFVIDEOMEMORY : RetErr$ = "DDERR_OUTOFVIDEOMEMORY (0x" + Hex(#DDERR_OUTOFVIDEOMEMORY) + ")"
      Case #DDERR_OVERLAPPINGRECTS : RetErr$ = "DDERR_OVERLAPPINGRECTS (0x" + Hex(#DDERR_OVERLAPPINGRECTS) + ")"
      Case #DDERR_OVERLAYCANTCLIP : RetErr$ = "DDERR_OVERLAYCANTCLIP (0x" + Hex(#DDERR_OVERLAYCANTCLIP) + ")"
      Case #DDERR_OVERLAYCOLORKEYONLYONEACTIVE : RetErr$ = "DDERR_OVERLAYCOLORKEYONLYONEACTIVE (0x" + Hex(#DDERR_OVERLAYCOLORKEYONLYONEACTIVE) + ")"
      Case #DDERR_OVERLAYNOTVISIBLE : RetErr$ = "DDERR_OVERLAYNOTVISIBLE (0x" + Hex(#DDERR_OVERLAYNOTVISIBLE) + ")"
      Case #DDERR_PALETTEBUSY : RetErr$ = "DDERR_PALETTEBUSY (0x" + Hex(#DDERR_PALETTEBUSY) + ")"
      Case #DDERR_PRIMARYSURFACEALREADYEXISTS : RetErr$ = "DDERR_PRIMARYSURFACEALREADYEXISTS (0x" + Hex(#DDERR_PRIMARYSURFACEALREADYEXISTS) + ")"
      Case #DDERR_REGIONTOOSMALL : RetErr$ = "DDERR_REGIONTOOSMALL (0x" + Hex(#DDERR_REGIONTOOSMALL) + ")"
      Case #DDERR_SURFACEALREADYATTACHED : RetErr$ = "DDERR_SURFACEALREADYATTACHED (0x" + Hex(#DDERR_SURFACEALREADYATTACHED) + ")"
      Case #DDERR_SURFACEALREADYDEPENDENT : RetErr$ = "DDERR_SURFACEALREADYDEPENDENT (0x" + Hex(#DDERR_SURFACEALREADYDEPENDENT) + ")"
      Case #DDERR_SURFACEBUSY : RetErr$ = "DDERR_SURFACEBUSY (0x" + Hex(#DDERR_SURFACEBUSY) + ")"
      Case #DDERR_SURFACEISOBSCURED : RetErr$ = "DDERR_SURFACEISOBSCURED (0x" + Hex(#DDERR_SURFACEISOBSCURED) + ")"
      Case #DDERR_SURFACELOST : RetErr$ = "DDERR_SURFACELOST (0x" + Hex(#DDERR_SURFACELOST) + ")"
      Case #DDERR_SURFACENOTATTACHED : RetErr$ = "DDERR_SURFACENOTATTACHED (0x" + Hex(#DDERR_SURFACENOTATTACHED) + ")"
      Case #DDERR_TOOBIGHEIGHT : RetErr$ = "DDERR_TOOBIGHEIGHT (0x" + Hex(#DDERR_TOOBIGHEIGHT) + ")"
      Case #DDERR_TOOBIGSIZE : RetErr$ = "DDERR_TOOBIGSIZE (0x" + Hex(#DDERR_TOOBIGSIZE) + ")"
      Case #DDERR_TOOBIGWIDTH : RetErr$ = "DDERR_TOOBIGWIDTH (0x" + Hex(#DDERR_TOOBIGWIDTH) + ")"
      Case #DDERR_UNSUPPORTED : RetErr$ = "DDERR_UNSUPPORTED (0x" + Hex(#DDERR_UNSUPPORTED) + ")"
      Case #DDERR_UNSUPPORTEDFORMAT : RetErr$ = "DDERR_UNSUPPORTEDFORMAT (0x" + Hex(#DDERR_UNSUPPORTEDFORMAT) + ")"
      Case #DDERR_UNSUPPORTEDMASK : RetErr$ = "DDERR_UNSUPPORTEDMASK (0x" + Hex(#DDERR_UNSUPPORTEDMASK) + ")"
      Case #DDERR_UNSUPPORTEDMODE : RetErr$ = "DDERR_UNSUPPORTEDMODE (0x" + Hex(#DDERR_UNSUPPORTEDMODE) + ")"
      Case #DDERR_VERTICALBLANKINPROGRESS : RetErr$ = "DDERR_VERTICALBLANKINPROGRESS (0x" + Hex(#DDERR_VERTICALBLANKINPROGRESS) + ")"
      Case #DDERR_VIDEONOTACTIVE : RetErr$ = "DDERR_VIDEONOTACTIVE (0x" + Hex(#DDERR_VIDEONOTACTIVE) + ")"
      Case #DDERR_WASSTILLDRAWING : RetErr$ = "DDERR_WASSTILLDRAWING (0x" + Hex(#DDERR_WASSTILLDRAWING) + ")"
      Case #DDERR_WRONGMODE : RetErr$ = "DDERR_WRONGMODE (0x" + Hex(#DDERR_WRONGMODE) + ")"
      Case #DDERR_XALIGN : RetErr$ = "DDERR_XALIGN (0x" + Hex(#DDERR_XALIGN) + ")"
        
    EndSelect
    
    If RetErr$ = ""
      
      MessageRequester("Error", "Error: 0x" + Hex(Value))
      
    Else
      
      MessageRequester("Error", RetErr$)
      
    EndIf
    
  EndIf
  
EndProcedure
ddovrl_test.pb

Code: Alles auswählen

XIncludeFile "dderr.pb"

;MessageRequester("Lukaso's DirectDraw Overlay Test", "10-Seconds-Overlay-Example")

If OpenLibrary(0, "ddovrl.dll")
  
  If CallFunction(0, "Overlay_Init")
    
    Repeat
      
    Delay(1000)
    
      If CallFunction(0, "Overlay_SupportAviable")
        
        If CallFunction(0, "Overlay_Init_Surfaces")
        
          If CallFunction(0, "Overlay_Show", "Lukaso's DirectDraw Overlay Test - nVidia Sucks")
            
            Delay(1000)
            
            If CallFunction(0, "Overlay_Clean")
              
              ;End
              
            EndIf 
            
          EndIf 
        
        EndIf
        
      EndIf
    
    ForEver
    
  EndIf 
  
  RetVal = CallFunction(0, "Overlay_GetLastError")

  DDErrC(RetVal)
  
  RetVal = CallFunction(0, "Overlay_GetErrorCount")
  
  MessageRequester("Error", "DirectDraw Command: " + Str(RetVal))
  
  CloseLibrary(0)
  
EndIf

End
Hab diesen Code damals von einem C++ Code übersetzt. In dem C++ Beispiel hat das Overlay allderings ohne Probleme funktioniert?!

Naja, viel Spaß mit :mrgreen:

Lukas
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten