how to properly convert dll data types to pb?
how to properly convert dll data types to pb?
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.
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.
Re: how to properly convvert dll data types to pb?
Post the header you are converting.
Much easier to deal in specifics.
Much easier to deal in specifics.
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
Re: how to properly convvert dll data types to pb?
It's a bit too long, but here are a few examples of data types I'm not sure how to convert:
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.
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);
It would be really useful to have a cheat sheet of proper PB equivalents to C data types.
Re: how to properly convvert dll data types to pb?
Scraped from one of skywalk's forum comments
but it's worth repeating here...
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
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
Re: how to properly convvert dll data types to pb?
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.
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.
Re: how to properly convvert dll data types to pb?
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.
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
Re: how to properly convvert dll data types to pb?
Thanks so much for the clarification.
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.
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.
Re: how to properly convvert dll data types to pb?
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 ...
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
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 ...
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
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
Denis
Re: how to properly convvert dll data types to pb?
Cool! Thanks!