PureBasic v4 - Änderungen

 Auf dieser Seite erhalten Sie einen Überblick über die vielen Änderungen, welche die

 neue PureBasic-Version v4 gegenüber der Vorgängerversion v3.94 mit sich brachte.

 

Änderungen an den Libraries von PureBasic v3.94 zu v4.00:

Image

Entfernt: UseImage() - ändern Sie UseImage(#Image) in ImageID(#Image), wo einfach nur die ID benötigt wird.

Hinzugefügt: CreateImage(#Image, Breite, Höhe [, Tiefe]) - neuer Parameter
Hinzugefügt: LoadImage(#Image, DateiName$ [, Flags]) - neuer Parameter
Hinzugefügt: CatchImage(#Image, DateiName$ [, Länge [, Flags]]) - neue Parameter

Geändert: ImageDepth(#Image) - neuer Parameter
Geändert: ImageHeight(#Image) - neuer Parameter
Geändert: ImageWidth(#Image) - neuer Parameter
Geändert: ImageID(#Image) - neuer Parameter
Geändert: ImageOutput(#Image) - neuer Parameter

String

Hinzugefügt: StrD(Nummer [, Dezimalstellen])
Hinzugefügt: StrQ()
Hinzugefügt: HexQ()
Hinzugefügt: BinQ()
Hinzugefügt: StrU(): ein #PB_Quad Flag hinzugefügt
Hinzugefügt: ValD(), ValQ()
Hinzugefügt: StringByteLength() - zum Berechnen der benötigten Länge eines Strings in den von PureBasic unterstützten verschiedenen Kodierungen

Math

Hinzugefügt: IntQ()

Thread

Hinzugefügt: IsThread(Thread) - testet, ob ein Thread (noch) existiert.
Hinzugefügt: CreateMutex() - erstellt ein Mutex-Objekt
Hinzugefügt: FreeMutex(Mutex) - zerstört das Objekt
Hinzugefügt: LockMutex(Mutex) - wartet bis ein Mutex verfügbar ist und sperrt diesen dann
Hinzugefügt: TryLockMutex(Mutex) - sperrt einen Mutex, wenn verfügbar, andernfalls wird umgehend 0 zurückgegeben
Hinzugefügt: UnlockMutex(Mutex) - entsperrt den Mutex, damit andere Threads diesen sperren können

Process (Neu)

Hinzugefügt: GetEnvironmentVariable(Name$) - ermittelt den Wert einer Umgebungsvariable
Hinzugefügt: SetEnvironmentVariable(Name$, Wert$) - setzt den Wert
Hinzugefügt: RemoveEnvironmentVariable(Name$) - löscht eine Umgebungsvariable
Hinzugefügt: ExamineEnvironmentVariables() - untersucht die derzeit gesetzten Umgebungsvariablen
Hinzugefügt: NextEnvironmentVariable() - ermittelt die nächste Variable
Hinzugefügt: EnvironmentVariableName() - ermittelt den Variablennamen
Hinzugefügt: EnvironmentVariableValue() - ermittelt den Variablenwert
Hinzugefügt: ProgramName() - ermittelt den vollständigen Pfad des Executables
Hinzugefügt: CountProgramParameters() - ermittelt die Anzahl der Parameter
Hinzugefügt: IsProgram(Programm) - überprüft, ob 'Programm' ein gültiges und mit RunProgram gestartetes Programm ist
Hinzugefügt: ProgramID(Programm) - ermittelt die ProcessID des Programms
Hinzugefügt: ProgramRunning(Programm) - gibt 1 zurück, wenn das Programm noch läuft
Hinzugefügt: WaitProgram(Programm [, Timeout]) - wartet auf das Ende des Programms (mit optionalem Timeout). Gibt 1 zurück, wenn das Programm beendet wurde.
Hinzugefügt: KillProgram(Programm) - zwingt das Programm zum Beenden
Hinzugefügt: ProgramExitCode(Programm) - ermittelt den Exitcode des Programms (nur gültig, nachdem das Programm beendet wurde)
Hinzugefügt: CloseProgram(Programm) - schließt die Interaktion mit dem Programm
Hinzugefügt: AvailableProgramOutput(Programm) - gibt die Anzahl an Bytes zurück, die bereit sind zum Lesen
Hinzugefügt: ReadProgramString(Programm) - liest einen String von der Programmausgabe
Hinzugefügt: ReadProgramData(Programm, *Buffer, Größe) - liest Daten von der Ausgabe
Hinzugefügt: ReadProgramError(Programm) - liest eine Nachricht von STDERR
Hinzugefügt: WriteProgramString(Programm, String$) - schreibt in die Programmeingabe (String)
Hinzugefügt: WriteProgramData(Program, *Buffer, Größe)- schreibt Daten in die Programmeingabe

Geändert: ProgramParameter([Index]) - ermittelt den nächsten Parameter (oder den am Positions-Index)
Geändert: RunProgram() mit neuen Flags:
  #PB_Program_Open    - öffnet die Programmkommunikation/ermittelt Informationen
  #PB_Program_Read    - erlaubt das Lesen der Programmausgabe (STDOUT)
  #PB_Program_Write   - erlaubt das Schreiben in die Programmeingabe (STDIN)
  #PB_Program_Error   - erlaubt das Abfragen von Nachrichten auf der Standard-Fehlerausgabe (STDERR)
  #PB_Program_Connect - verbindet die Ausgabe eines anderen Programms mit der Eingabe dieses Programms

File

Hinzugefügt: FileBuffersSize(#Datei, Größe) - ändert die Größe des Puffers für die angegebene Datei
Hinzugefügt: FileID(#Datei) - gibt die einmalige ID zurück, welche die Datei im Betriebssystem identifiziert
Hinzugefügt: FlushFileBuffers(#Datei) - stellt sich, dass alle gepufferten Operationen auf Disk geschrieben werden
Hinzugefügt: ReadChar(#Datei)
Hinzugefügt: ReadQuad(#Datei)
Hinzugefügt: ReadDouble(#Datei)
Hinzugefügt: WriteChar(#Datei, Wert)
Hinzugefügt: WriteQuad(#Datei, Wert)
Hinzugefügt: WriteDouble(#Datei, Wert)
Hinzugefügt: ReadStringFormat(#Datei)
Hinzugefügt: WriteStringFormat(#Datei, Format)

Geändert: FileSeek(#Datei, NeuePosition) - neuer Parameter
Geändert: WriteData(#Datei) - neuer Parameter
Geändert: ReadData(#Datei) - neuer Parameter
Geändert: Lof(#Datei) - neuer Parameter
Geändert: Loc(#Datei) - neuer Parameter
Geändert: ReadByte(#Datei) - neuer Parameter
Geändert: ReadWord(#Datei) - neuer Parameter
Geändert: ReadLong(#Datei) - neuer Parameter
Geändert: ReadFloat(#Datei) - neuer Parameter
Geändert: ReadString(#Datei [,Format]) - neuer Parameter
Geändert: ReadData(#Datei) - neuer Parameter
Geändert: WriteByte(#Datei, Data) - neuer Parameter
Geändert: WriteWord(#Datei, Data) - neuer Parameter
Geändert: WriteLong(#Datei, Data) - neuer Parameter
Geändert: WriteFloat(#Datei, Data) - neuer Parameter
Geändert: WriteString(#Datei, Data [,Format]) - neuer Parameter
Geändert: WriteStringN(#Datei, Data [,Format]) - neuer Parameter
Geändert: WriteData(#Datei, Data, Länge) - neuer Parameter

Entfernt: UseFile() - ändern Sie UseFile(#Datei) in FileID(#Datei), wo lediglich die ID benötigt wird.

2DDrawing

Hinzugefügt: DrawAlphaImage()
Hinzugefügt: TextHeight(Text$) - gibt die für den String benötigte Höhe zurück (unter Berücksichtigung des aktuellen Zeichensatzes/-ausgabe)
Hinzugefügt: FillArea(x, y, RandFarbe [, Farbe]) - wenn RandFarbe = -1, wird der Bereich mit der gleichen Farbe wie an (x,y) gefüllt

Geändert: FrontColor(Farbe) - Rot, Grün und Blau in nur einen Farbwert verbunden (fügen Sie RGB() für eine schnelle Umsetzung von altem Code hinzu).
Geändert: BackColor(Farbe) - Rot, Grün und Blau in nur einen Farbwert verbunden.
Geändert: NeuX = DrawText(x, y, Text$ [, ZeichenFarbe [, HintergrundFarbe]]) - x/y Koordinaten und optionale Farbwerte hinzugefügt
Geändert: TextLength(Text$) -> TextWidth(Text$) - umbenannt

Entfernt: Locate(x, y) - nicht länger nützlich.

Palette

Entfernt: UsePalette()

Geändert: GetPaletteColor(#Palette, Index) - neuer Parameter
Geändert: SetPaletteColor(#Palette, Index, Farbe) - neuer Parameter

Module

Geändert: SetModulePosition(#Modul, Position) - neuer Parameter
Geändert: GetModulePosition(#Modul) - neuer Parameter
Geändert: GetModuleRow(#Modul) - neuer Parameter
Geändert: StopModule(#Modul) - neuer Parameter und -1 = stoppt alle Module

Database

Geändert: FirstDatabaseRow(#Datenbank) - neuer Parameter
Geändert: PreviousDatabaseRow(#Datenbank) - neuer Parameter
Geändert: NextDatabaseRow(#Datenbank) - neuer Parameter
Geändert: GetDatabaseLong(#Datenbank) - neuer Parameter
Geändert: GetDatabaseFloat(#Datenbank) - neuer Parameter
Geändert: GetDatabaseString(#Datenbank) - neuer Parameter
Geändert: DatabaseUpdate(#Datenbank, Anfrage$) - neuer Parameter
Geändert: DatabaseQuery(#Datenbank, Anfrage$) - neuer Parameter
Geändert: DatabaseColumnType(#Datenbank, Spalte) - neuer Parameter
Geändert: DatabaseColumns(#Datenbank) - neuer Parameter
Geändert: DatabaseColumnName(#Datenbank, Spalte) - neuer Parameter

Entfernt: UseDatabase()

Movie

Geändert: MovieAudio(#Movie) - neuer Parameter
Geändert: MovieHeight(#Movie) - neuer Parameter
Geändert: MovieWidth(#Movie) - neuer Parameter
Geändert: MovieInfo(#Movie) - neuer Parameter
Geändert: MovieLength(#Movie) - neuer Parameter
Geändert: RenderMovieFrame(#Movie) - neuer Parameter
Geändert: ResizeMovie(#Movie, x, y, Breite, Höhe) - neuer Parameter
Geändert: ResumeMovie(#Movie) - neuer Parameter
Geändert: PauseMovie(#Movie) - neuer Parameter
Geändert: StopMovie(#Movie) - neuer Parameter
Geändert: MovieSeek(#Movie, Position) - neuer Parameter
Geändert: MovieStatus(#Movie) - neuer Parameter

Entfernt: UseMovie()

FileSystem

Hinzugefügt: FinishDirectory(#Verzeichnis)
Hinzugefügt: DirectoryEntryType(#Verzeichnis)
Hinzugefügt: DirectoryEntryDate(#Verzeichnis, DateType) - #PB_Date_Created, #PB_Date_Accessed, #PB_Date_Modified
Hinzugefügt: GetFileDate(Dateiname$, DatenTyp)
Hinzugefügt: SetFileDate(Dateiname$, DatenTyp)

Geändert: NextDirectoryEntry(#Verzeichnis) - neuer Parameter
Geändert: DirectoryEntryName(#Verzeichnis) - neuer Parameter
Geändert: DirectoryEntryAttributes(#Verzeichnis) - neuer Parameter
Geändert: DirectoryEntrySize(#Verzeichnis) - neuer Parameter
Geändert: IsFilename() in CheckFilename() - Funktionsname geändert

Entfernt: UseDirectory()

Wichtige Hinweise: NextDirectoryEntry() gibt nicht länger den Typ eines Eintrags (Datei/Typ) zurück. Um einheitlich zu anderen Examine...()/Next...() Funktionen in PB zu sein, wird jetzt nur 0 oder 1 zurückgegeben (0 bedeutet keine weiteren Objekte). Verwenden Sie DirectoryEntryType(), um den Typ eines Eintrags herauszufinden, wie Sie dies zuvor mit dem Ergebnis von NextDirectoryEntry() gemacht haben. FinishDirectory() muss nach jedem ExamineDirectory() aufgerufen werden.

Menu

Hinzugefügt: GetMenuItemText(#Menu, EintragID)
Hinzugefügt: GetMenuTitleText(#Menu, EintragID)
Hinzugefügt: SetMenuItemText(#Menu, EintragID, Text$)
Hinzugefügt: SetMenuTitleText(#Menu, EintragID, Text$)

Geändert: DisableMenuItem(#Menu, EintragID, Status) - neuer Parameter
Geändert: MenuID(#Menu) - neuer Parameter

Console

Hinzugefügt: EnableGraphicalConsole(Status)
Hinzugefügt: RawKey()
Hinzugefügt: Umleitung und Standardausgabe Unterstützung

Geändert: Inkey() - gibt jetzt nur 1 Zeichen oder nichts zurück (anstelle von immer 2), verwenden Sie RawKey() für das extra Zeichen

Hinweis: die alte Console Library verwendete einen grafischen Konsolenmodus, womit keine korrekte Ausgabe auf stdout erfolgte (Sie konnten sie nicht über die Befehlszeile aufrufen, wie : myprogram.exe > test.txt). Jetzt haben Sie diese Wahl mit EnableGraphicalConsole(Status), und wenn Sie nicht ausdrücklich den grafischen Modus einstellen, sollte die Ausgabe korrekt an stdout gesendet werden, was Ihnen das Schreiben besserer Konsolen-Werkzeuge ermöglicht. Das gleich gilt für stdin und den Input() Befehl.

AudioCD

Geändert: alle Funktionsnamen von 'CDAudio' in 'AudioCD' (weniger französisch-englisch...)

Toolbar

Hinzugefügt: ToolBarHeight(#ToolBar)
Hinzugefügt: ToolBarID(#ToolBar)

Geändert: ToolBarTooltip(#ToolBar, Schalter, Text$) - neuer Parameter
Geändert: DisableToolBarButton(#ToolBar, Schalter, Status) - neuer Parameter

Statusbar

Hinzugefügt: StatusBarHeight(#StatusBar)
Hinzugefügt: StatusBarID(#StatusBar)

Font

Geändert: FontID(#Font) - neuer Parameter
Geändert: CloseFont() in FreeFont()

Entfernt: UseFont()

Preferences

Hinzugefügt: Möglichkeit zum Hinzufügen/Ändern/Löschen von Schlüsseln in existierenden Prefs-Dateien.
Hinzugefügt: RemovePreferenceKey(Name$)
Hinzugefügt: RemovePreferenceGroup(Name$)
Hinzugefügt: ExaminePreferenceGroups() - untersuchen aller Gruppennamen in der Datei
Hinzugefügt: NextPreferenceGroup() - springt zum nächsten Gruppennamen (die Gruppe wird als die aktuelle gesetzt).
Hinzugefügt: PreferenceGroupName() - ermitteln des Gruppennamens.
Hinzugefügt: ExaminePreferenceKeys() - untersuchen aller Schlüsselnamen in der aktuellen Gruppe.
Hinzugefügt: NextPreferenceKey() - springt zum nächsten Schlüssel.
Hinzugefügt: PreferenceKeyName() - ermitteln den Schlüsselnamen.
Hinzugefügt: ReadPreferenceQuad(Schlüssel$, Standard)
Hinzugefügt: ReadPreferenceDouble(Schlüssel$, Standard)
Hinzugefügt: WritePreferenceQuad(Schlüssel$, Wert)
Hinzugefügt: WritePreferenceDouble(Schlüssel$, Wert)

Sprite

Hinzugefügt: SpriteID(#Sprite)
Hinzugefügt: FlipBuffer() - ein Flag hinzugefügt, um eine CPU-optimierte Synchronisation im Vollbildschirm-Modus zu erhalten.

Umbenannt: DisplayTranslucideSprite() in DisplayTranslucentSprite()

Geändert: TransparentSpriteColor(#Sprite, R, G, B) in TransparentSpriteColor(#Sprite, Farbe)
Geändert: ClearScreen(R, G, B) in ClearScreen(Farbe)

Library

Umbenannt: IsFunction() -> GetFunction()

Network

Hinzugefügt: UDP-Unterstützung über die Flags #PB_Network_UDP und #PB_Network_TCP
Hinzugefügt: GetClientIP()
Hinzugefügt: GetClientPort()
Hinzugefügt: EventServerNumber()

Umbenannt: NetworkClientID() -> EventClient()

Keyboard

Hinzugefügt: #PB_Keyboard_International und #PB_Keyboard_AllowSystemKeys Flags bei KeyboardMode()

Clipboard

Geändert: GetClipboardData(Typ) in GetClipboardImage(#Image)
Geändert: SetClipboardData(Typ, Data) in SetClipboardImage(#Image)

Memory

Hinzugefügt: Unterstützung für Unicode-Konvertierung bei PeekS() und PokeS() zwischen ASCII, UTF8 und UTF16
Hinzugefügt: PeekC(), PeekD(), PeekQ()
Hinzugefügt: PokeC(), PokeD(), PokeQ()
Hinzugefügt: MemorySize() - gibt die Größe eines Speicherblocks zurück
Hinzugefügt: MoveMemory()
Hinzugefügt: CompareMemoryString(*Text1, *Test2 [Modus [, MaxLänge [, Flags]]]) - Neue Flag-Parameter für den Vergleich von UTF16/UTF8/ASCII
Hinzugefügt: MemoryStringLength() - Neue Flag-Parameter für UTF16/UTF8/ASCII Unterstützung

Hinweis: Die Befehle PeekS, PokeS, CompareMemoryString, MemoryStringLength haben jetzt einen Parameter, welcher das String-Format angibt. Mögliche Optionen sind: #PB_Ascii, #PB_Unicode oder #PB_UTF8. Dies erlaubt das Arbeiten mit Strings im Speicher unabhängig vom aktuellen String-Modus, in dem das Executable kompiliert wurde (Unicode oder nicht).

Engine3D

Geändert: CreateMesh(#Mesh, MaximumVertex) - neuer Parameter
Geändert: MaterialAmbientColor(#Matrix1, -1) - -1 neuer Parameter

Hinzugefügt: EntityRenderMode()
Hinzugefügt: WorldShadows(#PB_Shadow_Additive)
Hinzugefügt: ParticleEmitterDirection()
Hinzugefügt: GetEntityMass
Hinzugefügt: SetEntityMass
Hinzugefügt: GetEntityFriction
Hinzugefügt: SetEntityFriction
Hinzugefügt: EntityPhysicBody
Hinzugefügt: ExamineWorldCollisions
Hinzugefügt: NextWorldCollision
Hinzugefügt: CheckWorldCollisionEntity
Hinzugefügt: FirstWorldCollisionEntity
Hinzugefügt: SecondWorldCollisionEntity
Hinzugefügt: WorldGravity
Hinzugefügt: EnableWorldCollision
Hinzugefügt: EnableWorldPhysics
Hinzugefügt: Parse3DScripts

Entfernt: RotateParticleEmitter() (war bisher nutzlos)

Window

Hinzugefügt: GetActiveWindow() - gibt das Fenster mit dem Fokus zurück
Hinzugefügt: DisableWindow(#Window, Status) - deaktiviert Anwendereingaben in das Fenster
Hinzugefügt: GetWindowState(#Window) - ermittelt den Minimiert/Maximiert Status
Hinzugefügt: SetWindowState(#Window, Status)- setzt den Minimiert/Maximiert Status
Hinzugefügt: StickyWindow(#Window, Status) - setzt das Fenster in den Vordergrund aller anderen, auch wenn es deaktiviert ist
Hinzugefügt: SetWindowColor(#Window, Farbe)- setzt die Hintergrundfarbe eines Fensters
Hinzugefügt: GetWindowColor(#Window) - ermittelt die aktuelle Hintergrundfarbe eines Fensters
Hinzugefügt: SmartWindowRefresh(#Window, Status) - Aktiviert oder deaktiviert das "SmartRefresh" Feature (intelligentes Auffrischen)

Geändert: OpenWindow(#Window, x, y, Breite, Höhe, Titel$ [, Flags [, ParentID]]) - Flags sind jetzt am Ende und optional
Geändert: WaitWindowEvent([Timeout]) - optionalen Timeout-Wert hinzugefügt
Geändert: ResizeWindow(#Window, x, y, Breite, Höhe) - '-1' Parameter müssen in #PB_Ignore geändert werden
Geändert: SetWindowCallback(@procedure()[, #Window]) - optionalen Window-Parameter hinzugefügt (um einen Callback nur für ein Fenster einzustellen)
Geändert: ResizeWindow(#Window, x, y, Breite, Höhe) - jetzt das gleiche wie ResizeGadget()
Geändert: WindowID(#Window) - Parameter ist nicht länger optional
Geändert: WindowHeight(#Window) - neuer Parameter
Geändert: WindowWidth(#Window) - neuer Parameter
Geändert: WindowX(#Window) - neuer Parameter
Geändert: WindowY(#Window) - neuer Parameter
Geändert: WindowMouseX(#Window) - neuer Parameter
Geändert: WindowMouseY(#Window) - neuer Parameter
Geändert: WindowOutput(#Window) - neuer Parameter

Umbenannt: EventWindowID() in EventWindow()
Umbenannt: EventGadgetID() in EventGadget()
Umbenannt: EventMenuID() in EventMenu()
Umbenannt: ActivateWindow() in SetActiveWindow(#Window)

Entfernt: MoveWindow()
Entfernt: DetachMenu()
Entfernt: UseWindow()
Entfernt: Konstanten zur Kompatibilität mit früheren Versionen entfernt, wie z.B. #PB_EventCloseWindow (benutzen Sie stattdessen das dokumentierte #PB_Event_CloseWindow)

Gadget

Hinzugefügt: GetActiveGadget() - gibt das gerade aktive Gadget zurück
Hinzugefügt: GadgetType(#Gadget) - gibt eine Konstante zurück, welche den Typ des Gadgets identifiziert
Hinzugefügt: SetGadgetData(#Gadget, Wert) - weist einem Gadget einen Wert hinzu (funktioniert mit allen Gadgets)
Hinzugefügt: GetGadgetData(#Gadget) - liest den zugewiesenen Wert
Hinzugefügt: SetGadgetItemData(#Gadget, Eintrag, Wert) - weist einem Gadget-Eintrag einen Wert zu (funktioniert nur bei bestimmten Gadgets)
Hinzugefügt: GetGadgetItemData(#Gadget, Eintrag)
Hinzugefügt: SetGadgetColor(#Gadget, Farbtyp, Farbe)
Hinzugefügt: GetGadgetColor(#Gadget, Farbtyp)
Hinzugefügt: SetGadgetItemColor(#Gadget, Eintrag, Farbtyp, Farbe [, Spalte])
Hinzugefügt: GetGadgetItemColor(#Gadget, Eintrag, Farbtyp [, Spalte])

Geändert: ActivateGadget(#Gadget) ist jetzt SetActiveGadget(#Gadget)
Geändert: ResizeGadget(#Gadget, x, y, Breite, Höhe), -1 sollte jetzt in #PB_Ignore geändert werden

Entfernt: #PB_String_MultiLine

Individuelle Änderungen bei Gadgets:

CalendarGadget()
- unterstützt SetGadgetColor() mit den folgenden Farbtypen:
#PB_Gadget_BackColor - Hintergrund
#PB_Gadget_FrontColor - Text zum Anzeigen der Tage
#PB_Gadget_TitleBackColor - Hintergrund des Monats-Titels
#PB_Gadget_TitleFrontColor - Textfarbe des Monats-Titels
#PB_Gadget_GreyTextColor - Farbe für Tage, die nicht im aktuellen Monat liegen

ComboBoxGadget()
- unterstützt SetGadgetItemData()

ContainerGadget()
- unterstützt SetGadgetColor() für die Hintergrundfarbe

DateGadget()
- unterstützt SetGadgetColor() mit den gleichen Wert wie das CalendarGadget() zum Einfärben des Aufklapp-Kalenders
- der Eingabebereich kann derzeit nicht eingefärbt werden

EditorGadget()
- unterstützt SetGadgetColor für Vorder- und Hintergrundfarbe
- neuer Flag: #PB_Editor_ReadOnly
- unterstützt SetGadgetrAttribute() mit #PB_Editor_ReadOnly zum Ermitteln/Setzen des "Readonly" Flags

ExplorerListGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe & #PB_Gadget_LineColor
- unterstützt GetGadgetItemAttribute(#Gadget, 0, #PB_Explorer_ColumnWidth, 2) ; gibt die Breite der Spalte 2 zurück
- unterstützt SetGadgetItemAttribute(#Gadget, 0, #PB_Explorer_ColumnWidth, 100, 2) ; setzt die Breite der Spalte 2 auf 100
- unterstützt GetGadgetItemText(#Gadget, -1, 2) ; gibt die Überschrift der Spalte 2 zurück
- unterstützt SetGadgetItemText(#Gadget, -1, "New Text", 2) ; ändert die Überschrift der Spalte 2

ExplorerTreeGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe & #PB_Gadget_LineColor

HyperLinkGadget()
- unterstützt SetGadgetColor() für die Vordergrundfarbe (Hintergrund ist immer transparent)
- neuer Flag: #PB_Hyperlink_Underline - zeichnet eine Linie unter den Text (ohne eine unterstrichenen Zeichensatz zu benötigen)

ListIconGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe und #PB_Gadget_LineColor (für #PB_ListIcon_GridLines)
- unterstützt SetGadgetItemColor() für Vorder- und Hintergrundfarbe (kann für jede Zelle individuell eingestellt werden)
- unterstützt SetGadgetItemData()
- Das Ereignis zum Feststellen einer Änderung der der Checkbox ist jetzt #PB_EventType_Change
- unterstützt GetGadgetItemAttribute(#Gadget, 0, #PB_ListIcon_ColumnWidth, 2) ; gibt die Breite der Spalte 2 zurück
- unterstützt SetGadgetItemAttribute(#Gadget, 0, #PB_ListIcon_ColumnWidth, 100, 2) ; setzt die Breite von Spalte 2 auf 100
- unterstützt GetGadgetItemText(#Gadget, -1, 2) ; gibt die Überschrift von Spalte 2 zurück
- unterstützt SetGadgetItemText(#Gadget, -1, "New Text", 2) ; ändert die Überschrift von Spalte 2

ListViewGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe (nicht für individuelle Einträge)
- unterstützt SetGadgetItemData()
- neue Flags:
#PB_ListView_Multiselect - erlaubt Mehrfach-Auswahl
#PB_ListView_ClickSelect - Mehrfachauswahl + Anklicken eines Eintrags markiert diesen oder entfernt die Markierung

MDIGadget()
- Die Child-Fenster des MDIGadget sind nicht länger "GadgetItems" (Gadget-Einträge), stattdessen echte PB-Fenster. Dies bedeutet, dass Sie ALLE Befehle der Windows Library mit ihnen benutzen können (mit Ausnahme von StickyWindow()). Dies macht einige der MDIGadget Features überflüssig, daher gibt es einige Änderungen:
- Das Gadget sendet keinerlei Events mehr: alle Ereignisse zum Schließen, Größenänderung oder Aktivieren werden jetzt als Window-Events empfangen.
- GetGadgetAttribute(), Get/SetGadgetItemAttribute, Get/SetGadgetItemState(), Get/SetGadgetItemText werden alle nicht länger unterstützt. All dies kann einfach über die Befehle der Windows Library erledigt werden.
- RemoveGadgetItem() wird nicht länger unterstützt. Verwenden Sie CloseWindow().

Die mit dem MDIGadget nutzbaren Befehle sind jetzt nur noch diese: (+ die gesamte Windows Library!)
- ClearGadgetItemList() : schließt alle Child-Fenster
- CountGadgetItems() : ermittelt die Anzahl an Child-Fenstern im Gadget
- GetGadgetState() : ermittelt die WindowID des gerade im Vordergrund des Gadgets befindlichen Fensters
- SetGadgetState() : setzt ein bestimmtes Fenster in den Vordergrund oder ordnet die Child-Fenster an. (Alles wie beim alten MDIGadget.)
- AddGadgetItem() : erstellt ein MDI Child - dies funktioniert wie folgt:
   AddGadgetItem(#MDI, #Window, Titel$ [, ImageID [, Flags]])
     - #Window - Nummer des neuen Fensters (kann #PB_Any sein!)
     - Titel$  - neuer Fenstertitel
     - ImageID - Icon für das Fenster (optional)
     - Flags   - unterstützt die meisten Flags von OpenWindow - wenn keine angegeben sind, werden die Standard MDI Flags verwendet. 
Nicht unterstützte Flags: #PB_Window_Borderless, #PB_Window_ScreenCentered, #PB_Window_WindowCentered
Hinweis: Sie müssen jetzt CreateGadgetList() aufrufen, um Einträge zu einem MDI Child-Fenster hinzufügen zu können, einfach wie bei normalen Fenstern.

- SetGadgetColor() kann mit #PB_Gadget_BackColor verwendet werden, um die MDI Hintergrundfarbe festzulegen
- SetGadgetAttribute() kann mit #PB_MDI_Image verwendet werden, um ein Hintergrundbild festzulegen, #PB_MDI_TileImage kann den Kachelmodus für das Bild ein- oder ausschalten

PanelGadget()
- GetGadgetAttribute() hinzugefügt, mit #PB_Panel_ItemWidth, #PB_Panel_ItemHeight ("Readonly") (es muss mindestens ein Tab vorhanden sein, damit dies funktioniert)

ProgressBarGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe (funktioniert nicht mit XP Skins)
- unterstützt SetGadgetAttribute() mit #PB_ProgressBar_Minimum, #PB_ProgressBar_Maximum

ScrollAreaGadget()
- unterstützt SetGadgetColor() für die Hintergrundfarbe
- neuer Flag: #PB_ScrollArea_Center - wenn die innere Größe kleiner als die äußere ist, wird der innere Bereich automatisch zentriert
- neue Optionen für SetGadgetAttribute(): #PB_ScrollArea_X/#PB_ScrollArea_Y zum Auslesen/Setzen der aktuellen Scroll-Position
- generiert jetzt ein Ereignis, wenn gescrollt wird

ScrollBarGadget()
- unterstützt SetGadgetAttribute() mit #PB_ScrollBar_Minimum, #PB_ScrollBar_Maximum, #PB_ScrollBar_PageLength

SpinGadget()
- unterstützt SetGadgetColor für Vorder- und Hintergrundfarbe (to color the edit area)
- unterstützt SetGadgetAttribute() mit #PB_Spin_Minimum, #PB_Spin_Maximum
- Neue Flags:
#PB_Spin_ReadOnly - Das zugehörige Stringgadget ist nicht editierbar, die Zahl kann nur durch die Pfeile geändert werden
#PB_Spin_Numeric - Das SpinGadget wird automatisch den Text mit dem Wert des eingestellten Status aktualisieren, sodass SetGadgetText nicht benötigt wird.
- Werte für EventType (Ereignistypen):
1 - der 'Hoch' Schalter wurde gedrückt
-1 - der 'Runter' Schalter wurde gedrückt
#PB_EventType_Change - der Text in der Eingabebox wurde geändert

SplitterGadget()
- neue Flags für Get/SetGadgetAttribute(): #PB_Splitter_FirstGadget, #PB_Splitter_SecondGadget
Mit GetGadgetAttribute() geben sie die #Gadget Nummer des gespeicherten Gadget zurück.
Mit SetGadgetAttribute() können Sie ein neues Gadget in den Splitter-Bereich einfügen.

Hinweis: Das alte Gadget wird nicht automatisch freigegeben! (Es wird aus dem Splitter genommen und auf dem gleichen Fenster wie der Splitter platziert.) Wenn Sie daher nicht möchten, dass das alte Gadget verbleibt, entfernen Sie es mit FreeGadget(). Dies ermöglicht das Umschalten von Gadgets in einem Splitter, ohne diese jedes Mal neu erstellen zu müssen.

Hinweis: Sie können ein Gadget nicht gleichzeitig in 2 Splitterbereichen haben. Um dieses daher von einem Splitter in einen anderen zu verschieben, ersetzen Sie es zuerst im ersten Splitter und setzen Sie es dann in den zweiten.

StringGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe

TextGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe
TrackBarGadget()
- unterstützt SetGadgetAttribute() mit #PB_TrackBar_Minimum, #PB_TrackBar_Maximum

TreeGadget()
- unterstützt SetGadgetColor() für Vorder- und Hintergrundfarbe & #PB_Gadget_LineColor
- unterstützt SetGadgetItemColor() für Vorder- und Hintergrundfarbe
- Management der Einträge komplett geändert. Es gibt keinerlei Knoten ("Nodes") mehr, einfach eine fortlaufende Liste, wo jeder Eintrag einen "Sublevel" hat. Die Sublevel aller Einträge definieren die Baumstruktur wie folgt:
   + Sublevel 0
   +-+ Sublevel 1
   | | Sublevel 1
   | +-+ Sublevel 2
   | | Sublevel 1
   | Sublevel 0              
- neuer Parameter für AddGadgetItem: AddGadgetItem(#Gadget, Position, Text$ [, ImageID [, Flags]])
Der "Flags" Parameter wird beim TreeGadget immer benötigt und definiert den Sublevel, in welchen dieser Eintrag eingeordnet wird.

Um den oben dargestellten Baum zu erstellen, gehen Sie wie folgt vor:
   AddGadgetItem(#TreeGadget, -1, "Sublevel 0", 0, 0)
   AddGadgetItem(#TreeGadget, -1, "Sublevel 1", 0, 1)
   AddGadgetItem(#TreeGadget, -1, "Sublevel 1", 0, 1)
   AddGadgetItem(#TreeGadget, -1, "Sublevel 2", 0, 2)
   AddGadgetItem(#TreeGadget, -1, "Sublevel 1", 0, 1)
   AddGadgetItem(#TreeGadget, -1, "Sublevel 0", 0, 0)    
- neues GetGadgetItemAttribute() mit #PB_Tree_SubLevel ("readonly"), um den Sublevel jedes Eintrags zu ermitteln
-
Entfernt: OpenTreeGadgetNode()
-
Entfernt: CloseTreeGadgetNode()
-
Entfernt: TreeGadgetItemNumber() - kann einfach mittels GadgetItemID() und einem Durchlauf durch die Eintragliste emuliert werden
-
Entfernt: CountTreeGadgetNodeItems() - kann einfach durch Vergleichen des Sublevels der Einträge emuliert werden