UnderwareDESIGN

PlayBASIC => Beginners => Topic started by: matty47 on November 18, 2024, 06:10:04 PM

Title: Define pointers in include file
Post by: matty47 on November 18, 2024, 06:10:04 PM
Trying to write an include file for Gdi32.dll. Hoe would I indicate that a parameter is a pointer
ChoosePixelFormat(hDC, pPixelFormatDescriptor*)e.g. the pPixelFormatDescriptor in this line?
Title: Re: Define pointers in include file
Post by: kevin on November 18, 2024, 08:59:07 PM
  The type aren't really relevant for the passing.  So pointers/bytes/words everything are passed the same way as 32bit integers through the stack.  So even boolean/char/bytes/words all the same in 32bit applications. 

  Here's the (untested) concept..  You can find various examples that do much the same through the forums.
 
[pbcode]
; PROJECT : Project1
; AUTHOR  :
; CREATED : 19/11/2024
; ---------------------------------------------------------------------


/*
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
*/

linkdll "Gdi32.dll"
  _ChoosePixelFormat(hDC, pPixelFormatDescriptor) alias "ChoosePixelFormat"
endlinkdll


    /*
  orignal windows structure
    https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-pixelformatdescriptor
   
typedef struct tPIXELFORMATDESCRIPTOR {
  WORD  nSize;
  WORD  nVersion;
  DWORD dwFlags;
  BYTE  iPixelType;
  BYTE  cColorBits;
  BYTE  cRedBits;
  BYTE  cRedShift;
  BYTE  cGreenBits;
  BYTE  cGreenShift;
  BYTE  cBlueBits;
  BYTE  cBlueShift;
  BYTE  cAlphaBits;
  BYTE  cAlphaShift;
  BYTE  cAccumBits;
  BYTE  cAccumRedBits;
  BYTE  cAccumGreenBits;
  BYTE  cAccumBlueBits;
  BYTE  cAccumAlphaBits;
  BYTE  cDepthBits;
  BYTE  cStencilBits;
  BYTE  cAuxBuffers;
  BYTE  iLayerType;
  BYTE  bReserved;
  DWORD dwLayerMask;
  DWORD dwVisibleMask;
  DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;   
   
      */
   
  // our compatible structure
        Type tPIXELFORMATDESCRIPTOR
                nSize as word;
                nVersion as word;
                dwFlags ;
                iPixelType as byte;
                cColorBits as byte;
                cRedBits as byte;
                cRedShift as byte;
                cGreenBits as byte;
                cGreenShift as byte;
                cBlueBits as byte;
                cBlueShift as byte;
                cAlphaBits as byte;
                cAlphaShift as byte;
                cAccumBits as byte;
                cAccumRedBits as byte;
                cAccumGreenBits as byte;
                cAccumBlueBits as byte;
                cAccumAlphaBits as byte;
                cDepthBits as byte;
                cStencilBits as byte;
                cAuxBuffers as byte;
                iLayerType as byte;
                bReserved as byte;
                dwLayerMask;
                dwVisibleMask;
                dwDamageMask;
        endtype       
   
 
function ChoosePixelFormat(hDC,PixelFormat as tPIXELFORMATDESCRIPTOR pointer)

    //  do stuff before system call if needed

  _ChoosePixelFormat(hDC,int(PixelFormat))

    //  clean up after system call if need.

endfunction


  print "running"
 
 
  sync
  waitkey
 

[/pbcode]


   

Title: Re: Define pointers in include file
Post by: matty47 on November 18, 2024, 11:14:07 PM
Thanks for the quick reply!
Title: Re: Define pointers in include file
Post by: kevin on November 19, 2024, 02:05:25 AM

 Well make sure you post your progress