how to properly convert dll data types to pb?

Just starting out? Need help? Post your questions and find answers here.
nsstudios
Enthusiast
Enthusiast
Posts: 274
Joined: Wed Aug 28, 2019 1:01 pm
Location: Serbia
Contact:

how to properly convert dll data types to pb?

Post by nsstudios »

Hi all,

I've been porting dll header file to prototypes (header converter outputs a blank file, and the other PB's header converter comments out most of the header), and i'm little confused about different data types.
What should one use in cases where the function return type is something like float *, unsigned int *, short *?
Also what do I do if those are not return types, but rather parameters?
Do I do .f, .q, .w? or do I do *?
Also, what's the proper way to handle unsigned ints?
Many sources keep telling me I should use a long, but if a long is signed int, and the unsigned int has a bigger positive range than signed,don't I have to use quad to make sure I can contain it?
Also, how do I handle const unsigned char *?
const char * is .p-ascii, but the unsigned?

I hope that wasn't too confusing.
Any help would be very much appreciated.
Last edited by nsstudios on Fri Sep 18, 2020 8:36 pm, edited 1 time in total.
User avatar
skywalk
Addict
Addict
Posts: 3997
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: how to properly convvert dll data types to pb?

Post by skywalk »

Post the header you are converting.
Much easier to deal in specifics.
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
nsstudios
Enthusiast
Enthusiast
Posts: 274
Joined: Wed Aug 28, 2019 1:01 pm
Location: Serbia
Contact:

Re: how to properly convvert dll data types to pb?

Post by nsstudios »

It's a bit too long, but here are a few examples of data types I'm not sure how to convert:

Code: Select all

typedef void * Bus;
typedef void * Wav;
typedef void * Monotone;
float * Bus_calcFFT(Bus * aBus);
int Wav_loadRawWave16Ex(Wav * aWav, short * aMem, unsigned int aLength, float aSamplerate /* = 44100.0f */, unsigned int aChannels /* = 1 */);
int Monotone_loadMem(Monotone * aMonotone, const unsigned char * aMem, unsigned int aLength);
I think void * can be a long, unsigned int a quad, short a word, but I'm not sure about those float *, short *, etc. Should those be just regular .f and .w or just * because it's a pointer?
It would be really useful to have a cheat sheet of proper PB equivalents to C data types.
User avatar
blueb
Addict
Addict
Posts: 1044
Joined: Sat Apr 26, 2003 2:15 pm
Location: Cuernavaca, Mexico

Re: how to properly convvert dll data types to pb?

Post by blueb »

Scraped from one of skywalk's forum comments :mrgreen:
but it's worth repeating here...

Code: Select all

Structure ScanAllTypes  ;-!PB Datatypes by skywalk...
  ; Allows 1 Define for all datatypes to be scanned.
  ; Define *p.ScanAllTypes = @somevariable or *somememory
  ; Consider as a StructureUnion. Takes no memory and overflow is not checked.
  ; Ex. *p\d[i] ; 'i' can be incremented in a loop without compiler error.
  ;          ; Type,   Bytes,  Min,                     Max,                     C Type
  b.b[0]     ; Byte,       1, -128,                     127,                     char, bool(C++)
  a.a[0]     ; Ascii,      1,  0,                       255,                     unsigned char, UCHAR, BYTE
  c.c[0]     ; Character,  2,  0,                       65535,                   unsigned short, USHORT
  u.u[0]     ; Unicode,    2,  0,                       65535,                   unsigned short, USHORT
  w.w[0]     ; Word,       2, -32768,                   32767,                   short, VB6 integer
  l.l[0]     ; Long,       4, -2147483648,              2147483647,              long, int (long & $FFFFFFFF = unsigned)
  ;;ul.ul[0] ; ULong,      4,  0,                       4294967295,              unsigned long, unsigned int, DWORD(C++)
  i.i[0]     ; Integer,    4, -2147483648,              2147483647,              long, int(x86 or 32-bit),sizeof*
  ;i.i[0]    ; Integer,    8, -9223372036854775808,     9223372036854775807,     long long(x64 or 64-bit),sizeof*
  q.q[0]     ; Quad,       8, -9223372036854775808,     9223372036854775807,     long long
  ;;uq.uq[0] ; UQuad,      8,  0,                       18446744073709551615,    unsigned long long, ULONGLONG
  f.f[0]     ; Float,      4,           -1.175494e-38,            3.402823e+38,  float      (6 decimal places)
  d.d[0]     ; Double,     8, -2.2250738585072013e-308, 1.7976931348623157e+308, double     (15 decimal places)
  ;;ld.ld[0] ; LDouble,   10,                -3.4e-4932,               1.1e+4932,long double(19 decimal places)
  ;;s.s      ; String$,    2/char + 2 for chr(0),       ,                        wchar_t, TCHAR
  ;s.s[0]    ; FAIL, -> *p = @x$, *p\s[0] = IMA ERROR.
  s.s{1}[0]  ; {FixedLen}, 2/char,                      ,                        char *, char var[] <-- Convert to Ascii
  ss.s[0]    ; Scan String array.
  ;s.s[0]    ; FAIL, -> *p = @x$(), *p\s[1],  *p\s[2],  etc.
  ;s.s[0]    ; OK,   -> *p = @x$,   *p\s[1],  *p\s[2],  etc.
  ;ss.s[0]   ; OK,   -> *p = @x$(), *p\ss[1], *p\ss[2], etc.
EndStructure
CompilerIf 1
  Define *p.ScanAllTypes
  Dim a$(2)
  Define.s s$ = "xyz"
  a$(0) = s$
  a$(1) = s$
  a$(2) = s$
  *p = @a$()      ; *ptr to string array()
  Debug *p\ss[0]  ; use *p\ss[]
  Debug *p\ss[1]
  Debug *p\ss[2]
  *p = @s$        ; *ptr to string
  Debug *p\s[0]   ; use *p\s[]
  Debug *p\s[1]   ; use *p\s[]
  Debug *p\s[2]   ; use *p\s[]
CompilerEndIf
- It was too lonely at the top.

System : PB 6.10 LTS (x64) and Win Pro 11 (x64)
Hardware: AMD Ryzen 9 5900X w/64 gigs Ram, AMD RX 6950 XT Graphics w/16gigs Mem
jack
Addict
Addict
Posts: 1336
Joined: Fri Apr 25, 2003 11:10 pm

Re: how to properly convvert dll data types to pb?

Post by jack »

nsstudios
Enthusiast
Enthusiast
Posts: 274
Joined: Wed Aug 28, 2019 1:01 pm
Location: Serbia
Contact:

Re: how to properly convvert dll data types to pb?

Post by nsstudios »

Wow! Thanks @blueb for digging that out and @skywalk for making it!
That helps a lot, except I wish instead of the types that pb doesn't have, it used a type that pb has, and which can do the job instead.
I'm still confused how I should handle pointers as function returns. I assume all pointers in pb are ints?
I also assume float * param, short * param, const unsigned char * param, should all be just *param?
And, yeah. It's SoLoud. :)
User avatar
skywalk
Addict
Addict
Posts: 3997
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: how to properly convvert dll data types to pb?

Post by skywalk »

Yes, all pointers are the sizeof(Integer) for your given compiler.
Whenever I see something like "const unsigned char * param",
I rearrange it to "param -is a pointer to- const unsigned char".
Void is the C way to allow referencing any type with a pointer.
PB allows the same.
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
nsstudios
Enthusiast
Enthusiast
Posts: 274
Joined: Wed Aug 28, 2019 1:01 pm
Location: Serbia
Contact:

Re: how to properly convvert dll data types to pb?

Post by nsstudios »

Thanks so much for the clarification.
:wink:
I don't have much experience with C or CPP directly, although I have used a few scripting languages that had the C-style syntax, but were very limited, so I didn't get to do much of anything that involved pointers.
Denis
Enthusiast
Enthusiast
Posts: 704
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: how to properly convvert dll data types to pb?

Post by Denis »

Hi nsstudios,


a while ago now, I wrote macros to help me define MS data types.
It might help you, but be careful, a number of errors may be present ... :oops:

for example unsigned int aLength gives aLength._Uint in PB with my macro.

PB only handles ascii and unicode as unsigned variables. So in PB, unsigned int aLength = int aLength is aLength._Int.
But as _Int = _Uint in my PB macros aLength._Int = aLength._Uint.

For pointers my macros are problematic, it will be necessary to adapt or be inspired by it to define correctly the type if it is really necessary.

I use a lot Gdi+, so I let these specif macros. For some Gdi+ macro, I still have some doubts about certain values.

If some guys here find errors, it'll be nice to help me to correct them :P

Code: Select all

;-  ----------------------------  The New Data Types  ----------------------------
;-  ----------------------------  Fixed Precision
;//  Fixed-precision data types are the same length in both 32- and 64-bit Windows.
;//  To help you remember this, their precision is part of the name of the Data type.
;//    https://msdn.microsoft.com/en-us/library/windows/desktop/aa384264%28v=vs.85%29.aspx
;//
;//  Windows Data Types
;//    https://docs.microsoft.com/fr-fr/windows/win32/winprog/windows-data-types
;//
;//  Large Integers  
;//    https://docs.microsoft.com/fr-fr/windows/win32/winprog/large-integers


Macro _DWORD32
      ;// 32-bit unsigned integer
      l
EndMacro
Macro _DWORD64
      ;// 64-bit unsigned integer
      q
EndMacro
Macro _Int32
      ;// 32-bit signed integer
      l
EndMacro
Macro _Int64
      ;// 64-bit signed integer
      q
EndMacro
Macro _LONG32
      ;// 32-bit signed integer
      l
EndMacro
Macro _LONG64
      ;// 64-bit signed integer
      q
EndMacro
Macro _Uint32
      ;// Unsigned INT32
      _Int32
EndMacro
Macro _Uint64
      ;// Unsigned INT64
      _Int64
EndMacro
Macro _ULONG32
      ;// Unsigned LONG32
      _LONG32
EndMacro
Macro _ULONG64
      ;// Unsigned LONG64
      _LONG64
EndMacro
;-  ----------------------------  End of Fixed Precision
;-
;-  ----------------------------  Pointer Precision
Macro _DWORD_PTR
      ;// Unsigned long type for pointer precision
      long
EndMacro
; ; Macro _HALF_PTR
; ;       ;     ;// Half the size of a pointer
; ;       ;     ;// Use within a Structure that contains a pointer And two small fields
; ;       ;     ?
; EndMacro
Macro _Int_PTR
      ;// Signed integer type For pointer precision
      integer
EndMacro
Macro _LONG_PTR
      ;   https://msdn.microsoft.com/en-us/library/ms810720.aspx#midl64b_newfeatures
      integer
EndMacro
Macro _SIZE_T
      i
EndMacro
; Macro _SSIZE_T
;       ;       ;// Signed SIZE_T
; EndMacro
; Macro _UHALF_PTR
;       ;       ;// Unsigned HALF_PTR
;       ;       ?
; EndMacro
Macro _Uint_PTR
      ;// Unsigned INT_PTR
      _Int_PTR
EndMacro
Macro _ULONG_PTR
      ;// Unsigned LONG_PTR
      _LONG_PTR
EndMacro
;-  ----------------------------  End of Pointer Precision
;-
;-  ----------------------------  Specific Pointer-Precision Types
Macro _POINTER_32
      ;// A 32-bit pointer
      ;// On 32-bit Windows, this is a native pointer
      ;// On 64-bit Windows, this is a truncated 64-bit pointer
      l
EndMacro
Macro _POINTER_64
      ;// A 64-bit pointer. On 64-bit Windows, this is a native pointer
      ;// On 32-bit Windows, this is a sign-extended 32-bit pointer
      ;// Note that it is Not safe To assume the state of the high pointer bit
      i
EndMacro
;-  ----------------------------  End of Specific Pointer-Precision Types
;-
;-  ----------------------------  End of The New Data Types  ----------------------------
;-
;-  ----------------------------  Windows Data Types
;-  ----------------------------  Types de base
Macro _Byte
      ;// A 8-bit unsigned char
      a
EndMacro
Macro _Bool
      ;// A Boolean variable (should be TRUE Or FALSE)
      ;// typedef int BOOL;
      l
EndMacro
Macro _BoolEAN
      ;// A Boolean variable (should be TRUE Or FALSE)
      ;// typedef BYTE BOOLEAN;
      _Byte
EndMacro
Macro _Char
      ;// An 8-bit Windows (ANSI) character
      a
EndMacro
Macro _WChar
      ;// A 16-bit unsigned integer. The range is 0 through 65535 decimal.
      c
EndMacro
Macro _Word
      ;// A 16-bit unsigned integer
      w
EndMacro
Macro _DWord
      ;// A 32-bit unsigned integer
      l
EndMacro
Macro _Int
      ;// A 32-bit signed integer
      l
EndMacro
Macro _Uint
      ;// An unsigned INT
      l
EndMacro
Macro _Int8
      ;// An 8-bit signed integer
      b
EndMacro
Macro _Uint8
      ;// An unsigned INT8.
      a
EndMacro
Macro _Int16
      ;// A 16-bit signed integer
      w
EndMacro
Macro _Uint16
      ;// An unsigned INT16
      u
EndMacro
Macro _Long
      ;// A 32-bit signed integer
      l
EndMacro
;-  ----------------------------  Fin des Types de base
;-
;-  ----------------------------  Debut Windows Data Types
Macro _ATOM
      ;// typedef WORD ATOM
      _WORD
EndMacro
Macro _CCHAR
      ;// An 8-bit Windows (ANSI) character
      _CHAR
EndMacro
Macro _COLORREF
      ;// The red, green, Blue (RGB) color value (32 bits)
      _DWORD
EndMacro
; Macro _CONST
; EndMacro
Macro _DWORDLONG
      ;// A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal
      q
EndMacro
Macro _Float
      f
EndMacro
Macro _Handle
      i
EndMacro
Macro _HACCEL
      _Handle
EndMacro
Macro _hBitmap
      _Handle
EndMacro
Macro _HBRUSH
      _Handle
EndMacro
Macro _HCOLORSPACE
      _Handle
EndMacro
Macro _HCONV
      _Handle
EndMacro
Macro _HCONVLIST
      _Handle
EndMacro
Macro _HCURSOR
      _Handle
EndMacro
Macro _HDC
      _Handle
EndMacro
Macro _HDDEDATA
      _Handle
EndMacro
Macro _HDESK
      _Handle
EndMacro
Macro _HDROP
      _Handle
EndMacro
Macro _HDWP
      _Handle
EndMacro
Macro _HENHMETAFILE
      _Handle
EndMacro
Macro _HFILE
      _Int
EndMacro
Macro _HFONT
      _Handle
EndMacro
Macro _HGDIOBJ
      _Handle
EndMacro
Macro _HGLOBAL
      _Handle
EndMacro
Macro _HHOOK
      _Handle
EndMacro
Macro _hIcon
      _Handle
EndMacro
Macro _HINSTANCE
      _Handle
EndMacro
Macro _HKEY
      _Handle
EndMacro
Macro _HKL
      _Handle
EndMacro
Macro _HLOCAL
      _Handle
EndMacro
Macro _HMENU
      _Handle
EndMacro
Macro _HMETAFILE
      _Handle
EndMacro
Macro _HMODULE
      _Handle
EndMacro
Macro _HMONITOR
      ;  If(WINVER >= 0x0500)
      _Handle
      ;  EndIf
EndMacro
Macro _hPalette
      _Handle
EndMacro
Macro _HPEN
      _Handle
EndMacro
Macro _Hresult
      _LONG
EndMacro
Macro _Hrgn
      _Handle
EndMacro
Macro _HRSRC
      _Handle
EndMacro
Macro _HSZ
      _Handle
EndMacro
Macro _HWINSTA
      _Handle
EndMacro
Macro _HWND
      _Handle
EndMacro
Macro _Langid
      _WORD
EndMacro
Macro _LCID
      _DWORD
EndMacro
Macro _LCTYPE
      _DWORD
EndMacro
Macro _LGRPID
      _DWORD
EndMacro
Macro _LONGLONG
      q
EndMacro
Macro _LPARAM
      ;// essai avec .i au lieu de LONG_PTR --> = integer, voir _LP_LPARAM
      i
EndMacro
Macro _LP_LPARAM
      ;// essai avec .i au lieu de LONG_PTR --> = integer
      LONG_PTR
EndMacro
Macro _LPBOOL
      _long
EndMacro
Macro _LPBYTE
      ascii
EndMacro
Macro _LPCOLORREF
      _DWORD_PTR
EndMacro
Macro _LPCSTR
      ;// pointeur sur une chaine de caractères sur 8 bits, pas unicode !
      ascii
EndMacro
Macro _LPCTSTR
      CompilerIf #PB_Compiler_Unicode
            unicode
      CompilerElse
            _LPCSTR
      CompilerEndIf
EndMacro
; Macro _LPCVOID
; EndMacro
Macro _LPCWSTR
      ;// chaine de caractère unicode
      unicode
EndMacro
Macro _LPDWORD
      _DWORD_PTR
EndMacro
Macro _LPHANDLE
      integer
EndMacro
Macro _LPINT
      long
EndMacro
Macro _LPLONG
      long
EndMacro
Macro _LPSTR
      ;// pointeur sur une chaine de caractères sur 8 bits, pas unicode !
      ascii
EndMacro
Macro _LPTSTR
      CompilerIf #PB_Compiler_Unicode
            unicode
      CompilerElse
            _LPSTR
      CompilerEndIf
EndMacro
Macro _LPWORD
      word
EndMacro
Macro _LPWSTR
      unicode
EndMacro
Macro _LRESULT
      _LONG_PTR
EndMacro
Macro _PBOOL
      long
EndMacro
Macro _PBOOLEAN
      ascii
EndMacro
Macro _PBYTE
      ascii
EndMacro
Macro _PCHAR
      ascii
EndMacro
Macro _PCSTR
      ascii
EndMacro
Macro _PCTSTR
      CompilerIf #PB_Compiler_Unicode
            _LPCWSTR
      CompilerElse
            _PCSTR
      CompilerEndIf
EndMacro
Macro _PCWSTR
      unicode
EndMacro
Macro _PDWORD
      _DWORD_PTR
EndMacro
Macro _PDWORDLONG
      quad
EndMacro
; Macro _PDWORD_PTR
;       _DWORD_PTR
; EndMacro
Macro _PDWORD32
      long
EndMacro
Macro _PDWORD64
      quad
EndMacro
Macro _PFLOAT
      float
EndMacro
; Macro _PHALF_PTR
; EndMacro
Macro _PHANDLE
      integer
EndMacro
Macro _PHKEY
      _PHANDLE
EndMacro
Macro _PINT
      long
EndMacro
Macro _PINT_PTR
      _Int_PTR
EndMacro
Macro _PINT8
      byte
EndMacro
Macro _PINT16
      word
EndMacro
Macro _PINT32
      long
EndMacro
Macro _PINT64
      quad
EndMacro
Macro _PLCID
      long
EndMacro
Macro _PLONG
      long
EndMacro
Macro _PLONGLONG
      quad
EndMacro
Macro _PLONG_PTR
      _LONG_PTR
EndMacro
Macro _PLONG32
      long
EndMacro
Macro _PLONG64
      quad
EndMacro
Macro _PSHORT
      word
EndMacro
; Macro _PSIZE_T
; EndMacro
; Macro _PSSIZE_T
; EndMacro
Macro _PSTR
      ascii
EndMacro
Macro _PTBYTE
      CompilerIf #PB_Compiler_Unicode
            unicode
      CompilerElse
            ascii
      CompilerEndIf
EndMacro
Macro _PTCHAR
      CompilerIf #PB_Compiler_Unicode
            unicode
      CompilerElse
            ascii
      CompilerEndIf
EndMacro
Macro _PTSTR
      CompilerIf #PB_Compiler_Unicode
            unicode
      CompilerElse
            _PSTR
      CompilerEndIf
EndMacro
Macro _PUCHAR
      ascii
EndMacro
Macro _PUINT
      long
EndMacro
Macro _PUINT_PTR
      _Uint_PTR
EndMacro
Macro _PUINT8
      aacii
EndMacro
Macro _PUINT16
      unicode
EndMacro
Macro _PUINT32
      long
EndMacro
Macro _PUINT64
      quad
EndMacro
Macro _PULONG
      long
EndMacro
Macro _PULONGLONG
      quad
EndMacro
Macro _PULONG_PTR
      _ULONG_PTR
EndMacro
Macro _PULONG32
      long
EndMacro
Macro _PULONG64
      quad
EndMacro
Macro _PUSHORT
      unicode
EndMacro
Macro _PWCHAR
      unicode
EndMacro
Macro _PWORD
      word
EndMacro
Macro _PWSTR
      unicode
EndMacro
Macro _QWORD
      q
EndMacro
Macro _SC_Handle
      _Handle
EndMacro
Macro _SERVICE_STATUS_Handle
      _Handle
EndMacro
Macro _SHORT
      w
EndMacro
Macro _TBYTE
      CompilerIf #PB_Compiler_Unicode
            u
      CompilerElse
            a
      CompilerEndIf
EndMacro
Macro _TCHAR
      _TBYTE
EndMacro
Macro _UCHAR
      a
EndMacro
Macro _ULONG
      l
EndMacro
Macro _ULONGLONG
      q
EndMacro
Macro _USHORT
      u
EndMacro
Macro _USN
      _LONGLONG
EndMacro
Macro _WCHAR
      u
EndMacro
Macro _WPARAM
      i
EndMacro
;-  ----------------------------  End of Windows Data Types
;-
;- Autres
Macro _PropId
      _dword
EndMacro
Macro _metaHeader
      MetaHeader
EndMacro
Macro _sizeL
      SizeL
EndMacro
;-  ----------------------------  Types Gdi+
;-  -----------------  Enumeration Types Gdi+
Macro _MetafileType
      _Int
EndMacro
Macro _Status
      i
EndMacro
Macro _Unit
      _Int
EndMacro
Macro _EncoderValue
      _Int
EndMacro
;-  -----------------  Structures Gdi+
Macro _BitmapData
      BitmapData
EndMacro
Macro _GdiplusStartupInputEx
      GdiplusStartupInputEx
EndMacro
Macro _WmfPlaceableFileHeader
      WmfPlaceableFileHeader
EndMacro
Macro _LevelsParams
      LevelsParams
EndMacro
Macro _ImageCodecInfo
      ImageCodecInfo
EndMacro
;-  -----------------  Structures non Gdi+
Macro _BitmapInfo
      BitmapInfo
EndMacro
Macro _BitmapInfoHeader
      BitmapInfoHeader
EndMacro
Macro _RGBQuad
      RGBQuad
EndMacro
;-  -----------------  Couleurs Gdi+
Macro _ArgbSize
      long
EndMacro
Macro _Argb64Size
      quad
EndMacro
Macro _Argb
      _Dword
EndMacro
Macro _Argb64
      q
EndMacro
Macro _CharacterRange
      CharacterRange
EndMacro
Macro _Color
      _DWORD
EndMacro
Macro _ColorMatrix
      ColorMatrix
EndMacro
Macro _colorPalette
      ColorPalette
EndMacro
Macro _ColorSize
      long
EndMacro
Macro _BrushType
      _Int
EndMacro
Macro _colorLUTParams
      ColorLUTParams
EndMacro
Macro _colorChannelLUT
      ColorChannelLUT
EndMacro
Macro _CombineMode
      _Uint
EndMacro
Macro _CompositingMode
      _Int
EndMacro
Macro _CompositingQuality
      _Int
EndMacro
Macro _CoordinateSpace
      _Int
EndMacro
Macro _CurveAdjustments
      l
EndMacro
Macro _CurveChannel
      l
EndMacro
Macro _CustomLineCapType
      l
EndMacro
Macro _DashCap
      _Int
EndMacro
Macro _DashStyle
      _Int
EndMacro
Macro _DitherType
      _Int
EndMacro
Macro _EmfType
      l
EndMacro
Macro _EncoderParameters
      EncoderParameters
EndMacro
Macro _MetafileFrameUnit
      l
EndMacro
Macro _FillMode
      _Int
EndMacro
Macro _FlushIntention
      _Int
EndMacro
Macro _fontFamily
      FontFamily
EndMacro
Macro _GdiplusStartupInput
      GdiplusStartupInput
EndMacro
Macro _GraphicsContainer
      _Uint
EndMacro
Macro _GraphicsState
      _Uint
EndMacro
Macro _HatchStyle
      _Int
EndMacro
Macro _HistogramFormat
      _Int
EndMacro
Macro _InterpolationMode
      _Int
EndMacro
Macro _LineCap
      _Int
EndMacro
Macro _LineJoin
      _Int
EndMacro
Macro _Matrix
      _Int
EndMacro
Macro _matrixOut
      MatrixOut
EndMacro
Macro _matrixOutArray
      MatrixOutArray
EndMacro
Macro _matrixOrder
      _Int
EndMacro
Macro _pathData
      PathData
EndMacro
Macro _penAlignment
      _Int
EndMacro
Macro _penType
      _Int
EndMacro
Macro _pixelOffsetMode
      _Int
EndMacro
Macro _point
      Point
EndMacro
Macro _pointF
      PointF
EndMacro
Macro _PropertyItem
      PropertyItem
EndMacro
Macro _rect
      Rect
EndMacro
Macro _rectF
      RectF
EndMacro
Macro _rectL
      RectL
EndMacro
Macro _size
      Size
EndMacro
Macro _sizeF
      SizeF
EndMacro
Macro _SmoothingMode
      _Int
EndMacro
Macro _TestControlEnum
      _Int
EndMacro
Macro _TextRenderingHint
      _Int
EndMacro
Macro _WarpMode
      _Int
EndMacro
Macro _WrapMode
      _Int
EndMacro
Macro _LinearGradientMode
      _Int
EndMacro
; Macro _MetafileHeader
;       _Uint
; EndMacro
Macro _p_Color
      long
EndMacro
Macro _p_Argb64
      quad
EndMacro
Macro _p_Argb
      long
EndMacro
Macro _p_LineCap
      _PINT
EndMacro
Macro _PaletteType
      _Int
EndMacro
Macro _PixelFormat
      _Int
EndMacro
Macro _PWMFRect16
      PWMFRect16
EndMacro
Macro _StringAlignment
      _Int
EndMacro
Macro _StringDigitSubstitute
      _Int
EndMacro
Macro _StringTrimming
      _Int
EndMacro


; Macro _DrawImageAbort
;       ImageAbort
; EndMacro
; Macro _DrawImageAbort_pt
;       ptr_ImageAbort
; EndMacro
; Macro _GetThumbnailImageAbort
;       ImageAbort
; EndMacro
;
; Macro _GetThumbnailImageAbort_pt
;       ptr_ImageAbort
; EndMacro

Macro _Real
      _Float
EndMacro
;-  ----------------------------  End Types Gdi+

;-  ----------------------------  Divers/Misc
Macro _POINTER
      i
EndMacro
Macro _Guid
      Guid
EndMacro
Macro _Clsid
      Clsid
EndMacro
A+
Denis
nsstudios
Enthusiast
Enthusiast
Posts: 274
Joined: Wed Aug 28, 2019 1:01 pm
Location: Serbia
Contact:

Re: how to properly convvert dll data types to pb?

Post by nsstudios »

Cool! Thanks!
Post Reply