Libraries: Difference between revisions
No edit summary |
No edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<center>'''DLL, C++ and the Windows API Libraries'''</center> | <center>'''DLL, C++ and the Windows API Libraries'''</center> | ||
* Working with QB64 Declarations: [[C Libraries]], [[DLL Libraries]], [[Windows Libraries]] | * Working with QB64 Declarations: [[C Libraries]], [[DLL Libraries]], [[Windows Libraries]] | ||
* QB64 Library Keywords: [[DECLARE | * QB64 Library Keywords: [[DECLARE LIBRARY]], [[ALIAS]], [[BYVAL]] | ||
* [[PEEK]] and [[POKE]] Library: [[PEEK and POKE Library]] | * [[PEEK]] and [[POKE]] Library: [[PEEK and POKE Library]] | ||
* COM and LPT ''Inpout32.dll'' [[OUT]]: [[Port Access Libraries]] | * COM and LPT ''Inpout32.dll'' [[OUT]]: [[Port Access Libraries]] | ||
* Setting Windows environment values and changing them in the Registry: [[Windows Environment]] | * Setting Windows environment values and changing them in the Registry: [[Windows Environment]] | ||
* SFML sound library: [[SFML Library]] | * SFML sound library: [[SFML Library]] | ||
* Windows program [[ | * Windows program [[Windows Libraries#Focus|FOCUS]] and [[Windows Libraries#Hot_Keys_(maximize)|HOTKEYS]] that do not require focus of the program. | ||
* Windows Registry Library: [[ | * Windows Registry Library: [[Windows Registry Access|Windows Registry Library]] | ||
* Windows or Linux SQL Database Library: [[SQL Client]] | * Windows or Linux SQL Database Library: [[SQL Client]] | ||
Line 21: | Line 21: | ||
* QB64 also allows [[TYPE]] declarations to be placed inside of [[SUB]] or [[FUNCTION]] procedures! | * QB64 also allows [[TYPE]] declarations to be placed inside of [[SUB]] or [[FUNCTION]] procedures! | ||
* In QB64-PE v3.12.0 and up, [[$INCLUDEONCE]] can be used to prevent that the include file's contents is injected multiple times into a program. | |||
Line 26: | Line 28: | ||
==C++ Variable Types== | == C++ Variable Types == | ||
The following C++ variable types should be used when converting sub-procedure parameters from Libraries to QB64 variable types. | The following C++ variable types should be used when converting sub-procedure parameters from Libraries to QB64 variable types. | ||
{{ | {{FixedStart}} '''QB64 Library Conversion Types''' | ||
'''C Name Description Size* Signed Range* Unsigned''' | '''C Name Description Size* Signed Range* Unsigned''' | ||
Line 42: | Line 44: | ||
[[Unicode|wchar_t]] Wide character([[Unicode]]) 2 or 4 1 wide character | [[Unicode|wchar_t]] Wide character([[Unicode]]) 2 or 4 1 wide character | ||
[[_OFFSET|PVOID]] void pointer(void *) ANY Pointer or offset | [[_OFFSET|PVOID]] void pointer(void *) ANY Pointer or offset | ||
{{ | {{FixedEnd}} | ||
'''*''' The values of the columns Size and Range depend on the system the program is compiled. The values shown above are those found on most 32-bit systems, but for other systems, the general specification is that int has the natural size suggested by the system architecture (one "word") and the four integer types char, short, int and long must each be at least as large as the numerical type preceding it, with char being always one byte in size. The same applies to the floating point types float, double and long double, where each one must provide at least as much precision as the one that preceded it. | '''*''' The values of the columns Size and Range depend on the system the program is compiled. The values shown above are those found on most 32-bit systems, but for other systems, the general specification is that int has the natural size suggested by the system architecture (one "word") and the four integer types char, short, int and long must each be at least as large as the numerical type preceding it, with char being always one byte in size. The same applies to the floating point types float, double and long double, where each one must provide at least as much precision as the one that preceded it. | ||
{{ | {{FixedStart}} | ||
''' Windows API Data Structures''' | ''' Windows API Data Structures''' | ||
Line 58: | Line 60: | ||
QWORD 8 bytes 64 [[_INTEGER64]] | QWORD 8 bytes 64 [[_INTEGER64]] | ||
Ptr or LP Short or Long Pointer name ANY [[_OFFSET]] | Ptr or LP Short or Long Pointer name ANY [[_OFFSET]] | ||
{{ | {{FixedEnd}} | ||
{{ | {{PageReferences}} |
Latest revision as of 13:19, 19 November 2024
- Working with QB64 Declarations: C Libraries, DLL Libraries, Windows Libraries
- QB64 Library Keywords: DECLARE LIBRARY, ALIAS, BYVAL
- PEEK and POKE Library: PEEK and POKE Library
- COM and LPT Inpout32.dll OUT: Port Access Libraries
- Setting Windows environment values and changing them in the Registry: Windows Environment
- SFML sound library: SFML Library
- Windows program FOCUS and HOTKEYS that do not require focus of the program.
- Windows Registry Library: Windows Registry Library
- Windows or Linux SQL Database Library: SQL Client
To create your own libraries of your favorite Basic subs and functions, just copy the QB64 code to a text file and save it as a BI or BM file. Then all you need to do is $INCLUDE the text file name after all of the SUB and FUNCTION code in the program. Once it is compiled, the text file is no longer needed. Save it for other programs you create! No more Object or QLB files to mess with either!
- Variable DEF, DIM, SHARED, TYPE and DATA statements should be $INCLUDEd in a BI text file at the start of the program.
- SUB and FUNCTION code should be $INCLUDEd at the very bottom of the QB64 BAS code module in a BM text file.
- In QB64-PE v3.12.0 and up, $INCLUDEONCE can be used to prevent that the include file's contents is injected multiple times into a program.
C++ Variable Types
The following C++ variable types should be used when converting sub-procedure parameters from Libraries to QB64 variable types.
QB64 Library Conversion Types C Name Description Size* Signed Range* Unsigned char Character or small integer. 1 byte -128 to 127 0 to 255 short int Short Integer(Word) 2 byte -32768 to 32767 0 to 65535 int Integer(Dword) 4 byte -2147483648 to 2147483647 0 to 4294967295 long int Int32, Long integer or Long 4 byte -2147483648 to 2147483647 0 to 4294967295 long long Long long (Qword) 8 byte -9223372036854775808 to 9223372036854775807 bool Boolean value true or false. 1 byte true or false float Floating point number 4 byte +/- 3.4E +/- 38 (~7 digits) double Double precision floating. 8 byte 1.7976E+308 (~15 digits) long double Long double precision float 10 byte 1.1897E+4932 (~22 digits) wchar_t Wide character(Unicode) 2 or 4 1 wide character PVOID void pointer(void *) ANY Pointer or offset |
* The values of the columns Size and Range depend on the system the program is compiled. The values shown above are those found on most 32-bit systems, but for other systems, the general specification is that int has the natural size suggested by the system architecture (one "word") and the four integer types char, short, int and long must each be at least as large as the numerical type preceding it, with char being always one byte in size. The same applies to the floating point types float, double and long double, where each one must provide at least as much precision as the one that preceded it.
Windows API Data Structures Name Description Bits QB64 Type bit 8 bits in one byte 1 _BIT nybble 2 nybbles in one byte 4 _BIT * 4 byte 1 byte (2 nybbles) 8 _BYTE Char(FunctionA) ASCII character 8(LEN(buffer)) _BYTE WORD 2 bytes 16 INTEGER CharW(FunctionW) Unicode wide character 16(LEN(buffer) \ 2) _BYTE * 2 DWORD 4 bytes 32 LONG QWORD 8 bytes 64 _INTEGER64 Ptr or LP Short or Long Pointer name ANY _OFFSET |