Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Gjemme musepeker med DirectX


Anbefalte innlegg

Hei

 

Driver med et spill hvor jeg skifter oppløsning med DirectX. Det virker ikke helt som at ShotCursor(False) fungerer. Noen som vet hvordan jeg kan gjemme den med DirectX? (Jeg må kunne finne posisjonen selv om den er usynelig)

 

Option Explicit

Dim dx As DirectX7
Dim dx_draw As DirectDraw7
Dim Speed As Integer
Dim View As DirectDrawSurface7
Dim ViewDesc As DDSURFACEDESC2
Dim BuffCaps As DDSCAPS2
Dim buff As DirectDrawSurface7
Dim pic(1) As DirectDrawSurface7
Dim Pic1 As DirectDrawSurface7
Dim PicDesc As DDSURFACEDESC2
Dim ViewRect As RECT
Dim DrawRect As RECT
Dim BackColor As Long

Dim ColorKey As DDCOLORKEY

Dim Tell As Integer
Dim CurrentSelect As Integer

'Initialize
Public Sub InitializeDirectX()

Set dx = New DirectX7
Set dx_draw = dx.DirectDrawCreate("")

End Sub

'Endre skjermstørelsen
Public Function EndreSkjermStørrelse(Width As Long, Height As Long, Form As Form)

BackColor = dx.CreateColorRGBA(255, 0, 0, 128)

dx_draw.SetCooperativeLevel Form.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE
dx_draw.SetDisplayMode Width, Height, 32, 0, DDSDM_DEFAULT

End Function

'Gjøre alt normalt igjen
Public Sub MakeNormal(Form As Form)

Call dx_draw.RestoreDisplayMode
Call dx_draw.SetCooperativeLevel(Form.hWnd, DDSCL_NORMAL)

End Sub

Lenke til kommentar
Videoannonse
Annonse

Det er sikkert mulig i DirectX, men API-kallet ShowCursor burde fungere. Et mulig problem er at du ikke forminsker den interne variabelen display counter inntil den når null, hvilket er hva denne funksjonen i realiteten gjør. Windows holder faktisk orden på hvor mange ganger alle programmer kaller denne funksjonen, og adderer eller subtraherer til en variabel avhengig av bShow-paramenteren.

 

Du må således gjemme musepekeren på følgende måte:

 

Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

Public Sub EnableCursor(iSetting As Integer)

    Select Case iSetting

          Case True

                Do While ShowCursor(True) <= 0

                Loop

          Case False

                Do While ShowCursor(False) >= 0

                Loop

    End Select

End Sub

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...