PureBasic

Изменения

Изменения в библиотеках с v3.94 до v4.00

Image

удалено: UseImage() - изменён UseImage(#Image) на ImageID(#Image), где нужен только идентификатор.

добавлено: CreateImage(#Image, Width, Height [, Depth]) - Новый параметр
добавлено: LoadImage(#Image, Filename$ [, Flags]) - Новый параметр
добавлено: CatchImage(#Image, Filename$ [, Length [, Flags]]) - Новый параметрs

изменено: ImageDepth(#Image) - Новый параметр
изменено: ImageHeight(#Image) - Новый параметр
изменено: ImageWidth(#Image) - Новый параметр
изменено: ImageID(#Image) - Новый параметр
изменено: ImageOutput(#Image) - Новый параметр

String

добавлено: StrD(Number [, NbDecimals])
добавлено: StrQ()
добавлено: HexQ()
добавлено: BinQ()
добавлено: StrU(): добавлен флаг #PB_Quad
добавлено: ValD(), ValQ()
добавлено: StringByteLength() - рассчитать необходимую длину строки в другой кодировке, поддерживаемой PureBasic

Math

добавлено: IntQ()

Thread

добавлено: IsThread(Thread) - проверить, существует ли поток (все еще).
добавлено: CreateMutex() - создать объект мьютекса
добавлено: FreeMutex(Mutex) - уничтожить объект
добавлено: LockMutex(Mutex) - дождаться мьютекса и заблокировать его
добавлено: TryLockMutex(Mutex) - заблокировать мьютекс, если он доступен, в противном случае немедленно вернуть 0
добавлено: UnlockMutex(Mutex) - разблокировать мьютекс, чтобы другие потоки могли его заблокировать

Process (New)

добавлено: GetEnvironmentVariable(Name$) - получить значение переменной
добавлено: SetEnvironmentVariable(Name$, Value$) - установить значение
добавлено: RemoveEnvironmentVariable(Name$) - удалить переменную среды...
добавлено: ExamineEnvironmentVariables() - изучить текущие установленные переменные
добавлено: NextEnvironmentVariable() - получить следующую переменную
добавлено: EnvironmentVariableName() - получить имя переменной
добавлено: EnvironmentVariableValue() - получить значение переменной
добавлено: ProgramName() - получить полный путь к исполняемому файлу
добавлено: CountProgramParameters() - получить количество параметров
добавлено: IsProgram(Program) - проверяет, является ли Программа действительной программой, созданной с помощью RunProgram
добавлено: ProgramID(Program) - получить идентификатор процесса программы
добавлено: ProgramRunning(Program) - возвращает 1, если программа все еще работает
добавлено: WaitProgram(Program [, Timeout]) - ожидает завершения программы (с необязательным таймаутом) возвращает 1, если программа закончилась
добавлено: KillProgram(Program) - принудительно завершает программу
добавлено: ProgramExitCode(Program) - получить код выхода из программы (действителен только после завершения программы)
добавлено: CloseProgram(Program) - закрыть взаимодействие с программой
добавлено: AvailableProgramOutput(Program) - возвращает количество байтов, доступных для чтения
добавлено: ReadProgramString(Program) - читать строку из вывода программы
добавлено: ReadProgramData(Program, *Buffer, size) - читать данные из вывода
добавлено: ReadProgramError(Program) - прочитать сообщение от STDERR
добавлено: WriteProgramString(Program, String$) - записать на вход программы (строку)
добавлено: WriteProgramData(Program, *Buffer, size)- записать данные на вход программы

изменено: ProgramParameter([Index]) - получить следующий (или по индексу позиции) параметр
изменено: RunProgram() с новыми флагами:
  #PB_Program_Open    - открыть программу передавать / получать информацию
  #PB_Program_Read    - разрешить чтение с выхода программ (STDOUT)
  #PB_Program_Write   - разрешить запись на ввод программ (STDIN)
  #PB_Program_Error   - разрешить отлов сообщения о стандартной ошибке (STDERR)
  #PB_Program_Connect - подключите выход другой программы к входу этой программы

File

добавлено: FileBuffersSize(#File, Size) - Изменить размер буферов для указанного файла.
добавлено: FileID(#File) - Возвращает уникальный идентификатор, который идентифицирует файл в операционной системе.
добавлено: FlushFileBuffers(#File) - Гарантирует, что все буферизованные операции записаны на диск.
добавлено: ReadChar(#File)
добавлено: ReadQuad(#File)
добавлено: ReadDouble(#File)
добавлено: WriteChar(#File, Value)
добавлено: WriteQuad(#File, Value)
добавлено: WriteDouble(#File, Value)
добавлено: ReadStringFormat(#File)
добавлено: WriteStringFormat(#File, Format)

изменено: FileSeek(#File, NewPosition) - Новый параметр
изменено: WriteData(#File) - Новый параметр
изменено: ReadData(#File) - Новый параметр
изменено: Lof(#File) - Новый параметр
изменено: Loc(#File) - Новый параметр
изменено: ReadByte(#File) - Новый параметр
изменено: ReadWord(#File) - Новый параметр
изменено: ReadLong(#File) - Новый параметр
изменено: ReadFloat(#File) - Новый параметр
изменено: ReadString(#File [,Format]) - Новый параметр
изменено: ReadData(#File) - Новый параметр
изменено: WriteByte(#File, Data) - Новый параметр
изменено: WriteWord(#File, Data) - Новый параметр
изменено: WriteLong(#File, Data) - Новый параметр
изменено: WriteFloat(#File, Data) - Новый параметр
изменено: WriteString(#File, Data [,Format]) - Новый параметр
изменено: WriteStringN(#File, Data [,Format]) - Новый параметр
изменено: WriteData(#File, Data, Length) - Новый параметр

удалено: UseFile() - заменён UseFile(#File) на FileID(#File), где нужен только идентификатор.

2DDrawing

добавлено: DrawAlphaImage()
добавлено: TextHeight(Text$) - Возвращает высоту данной строки на текущей поверхности вывода при использовании текущего шрифта.
добавлено: FillArea(x, y, BorderColor [, Color]) - если BorderColor = -1, он заполняет область тем же цветом, что и на (x, y)

изменено: FrontColor(Color) - присоединились красный, зеленый, синий только к одному значению цвета. (добавьте RGB () для быстрой настройки старого кода)
изменено: BackColor(Color) - присоединились красный, зеленый, синий только к одному значению цвета.
изменено: NewX = DrawText(x, y, Text$ [, FrontColor [, BackColor]]) - добавлены координаты х / у и необязательные значения цвета
изменено: TextLength(Text$) -> TextWidth(Text$) - Переименование

удалено: Locate(x, y) - больше не нужно.

Palette

удалено: UsePalette()

изменено: GetPaletteColor(#Palette, Index) - Новый параметр
изменено: SetPaletteColor(#Palette, Index, Color) - Новый параметр

Module

изменено: SetModulePosition(#Module, Position) - Новый параметр
изменено: GetModulePosition(#Module) - Новый параметр
изменено: GetModuleRow(#Module) - Новый параметр
изменено: StopModule(#Module) - Новый параметр и -1 = остановить все модули

Database

изменено: FirstDatabaseRow(#Database) - Новый параметр
изменено: PreviousDatabaseRow(#Database) - Новый параметр
изменено: NextDatabaseRow(#Database) - Новый параметр
изменено: GetDatabaseLong(#Database) - Новый параметр
изменено: GetDatabaseFloat(#Database) - Новый параметр
изменено: GetDatabaseString(#Database) - Новый параметр
изменено: DatabaseUpdate(#Database, Query$) - Новый параметр
изменено: DatabaseQuery(#Database, Query$) - Новый параметр
изменено: DatabaseColumnType(#Database, Column) - Новый параметр
изменено: DatabaseColumns(#Database) - Новый параметр
изменено: DatabaseColumnName(#Database, Column) - Новый параметр

удалено: UseDatabase()

Movie

изменено: MovieAudio(#Movie) - Новый параметр
изменено: MovieHeight(#Movie) - Новый параметр
изменено: MovieWidth(#Movie) - Новый параметр
изменено: MovieInfo(#Movie) - Новый параметр
изменено: MovieLength(#Movie) - Новый параметр
изменено: RenderMovieFrame(#Movie) - Новый параметр
изменено: ResizeMovie(#Movie, x, y, Width, Height) - Новый параметр
изменено: ResumeMovie(#Movie) - Новый параметр
изменено: PauseMovie(#Movie) - Новый параметр
изменено: StopMovie(#Movie) - Новый параметр
изменено: MovieSeek(#Movie, Position) - Новый параметр
изменено: MovieStatus(#Movie) - Новый параметр

удалено: UseMovie()

FileSystem

добавлено: FinishDirectory(#Directory)
добавлено: DirectoryEntryType(#Directory)
добавлено: DirectoryEntryDate(#Directory, DateType) - #PB_Date_Created, #PB_Date_Accessed, #PB_Date_Modified
добавлено: GetFileDate(Filename$, DataType)
добавлено: SetFileDate(Filename$, DataType)

изменено: NextDirectoryEntry(#Directory) - Новый параметр
изменено: DirectoryEntryName(#Directory) - Новый параметр
изменено: DirectoryEntryAttributes(#Directory) - Новый параметр
изменено: DirectoryEntrySize(#Directory) - Новый параметр

переименовано: IsFilename() в CheckFilename() - изменено название функции

удалено: UseDirectory()

Важные примечания: NextDirectoryEntry() больше не возвращает тип записи (файл/тип). Чтобы быть совместимым с другими функциями Examine...() / Next...() в PB, теперь он возвращает только 0 или 1 (0 означает, что больше нет объектов). Используйте DirectoryEntryType(), чтобы узнать тип записи, как вы делали раньше, с результатом NextDirectoryEntry(). FinishDirectory() должен вызываться после каждого ExamineDirectory().

Menu

добавлено: GetMenuItemText(#Menu, ItemID)
добавлено: GetMenuTitleText(#Menu, ItemID)
добавлено: SetMenuItemText(#Menu, ItemID, Text$)
добавлено: SetMenuTitleText(#Menu, ItemID, Text$)

изменено: DisableMenuItem(#Menu, ItemID, State) - Новый параметр
изменено: MenuID(#Menu) - Новый параметр

Console

добавлено: EnableGraphicalConsole(State)
добавлено: RawKey()
добавлено: Поддержка перенаправления и стандартного вывода

изменено: Inkey() - теперь возвращает только 1 символ или ничего (вместо всегда 2), используйте RawKey() для дополнительного символа

Примечание: старая консольная библиотека использовала режим графической консоли, который не выводил на стандартный вывод. (Вы не можете вызвать его из командной строки, например: myprogram.exe > test.txt). Теперь у вас есть выбор с EnableGraphicalConsole (State), и если вы не устанавливаете явно графический режим, напечатанные материалы должны быть правильно отправлены в стандартный вывод, позволяющий писать лучшие консольные инструменты. Это также относится к stdin и команде Input ().

AudioCD

изменено: все названия функций из 'CDAudio' в 'AudioCD' (меньше франко-английский..)

Toolbar

добавлено: ToolBarHeight(#ToolBar)
добавлено: ToolBarID(#ToolBar)

изменено: ToolBarTooltip(#ToolBar, Button, Text$) - Новый параметр
изменено: DisableToolBarButton(#ToolBar, Button, State) - Новый параметр

Statusbar

добавлено: StatusBarHeight(#StatusBar)
добавлено: StatusBarID(#StatusBar)

Font

изменено: FontID(#Font) - Новый параметр
изменено: CloseFont() to FreeFont()

удалено: UseFont()

Preferences

добавлено: Возможность добавлять/изменять/удалять ключи к существующим файлам prefs.
добавлено: RemovePreferenceKey(Name$)
добавлено: RemovePreferenceGroup(Name$)
добавлено: ExaminePreferenceGroups() - получить все имена групп в файле
добавлено: NextPreferenceGroup() - перейти к следующему названию группы. (группа будет установлена как текущая)
добавлено: PreferenceGroupName() - получить имя группы.
добавлено: ExaminePreferenceKeys() - получить все ключевые имена в текущей группе
добавлено: NextPreferenceKey() - перейти к следующему ключу.
добавлено: PreferenceKeyName() - получить имя ключа
добавлено: ReadPreferenceQuad(Key$, Default)
добавлено: ReadPreferenceDouble(Key$, Default)
добавлено: WritePreferenceQuad(Key$, Value)
добавлено: WritePreferenceDouble(Key$, Value)

Sprite

добавлено: SpriteID(#Sprite)
добавлено: FlipBuffer() - добавлен флажок, чтобы оптимизировать процессор для синхронизации в полноэкранном режиме

переименовано: DisplayTranslucideSprite() в DisplayTranslucentSprite()

изменено: TransparentSpriteColor(#Sprite, R, G, B) на TransparentSpriteColor(#Sprite, Color)
изменено: ClearScreen(R, G, B) to ClearScreen(Color)

Library

переименовано: IsFunction() -> GetFunction()

Network

добавлено: Поддержка UDP через флаги #PB_Network_UDP и #PB_Network_TCP
добавлено: GetClientIP()
добавлено: GetClientPort()
добавлено: EventServerNumber()

переименовано: NetworkClientID() -> EventClient()

Keyboard

добавлено: #PB_Keyboard_International и #PB_Keyboard_AllowSystemKeys флаги на KeyboardMode()

Clipboard

изменено: GetClipboardData(Type) на GetClipboardImage(#Image)
изменено: SetClipboardData(Type, Data) на SetClipboardImage(#Image)

Memory

добавлено: Поддержка преобразования Unicode в PeekS() и PokeS() между ASCII, UTF8 и UTF16
добавлено: PeekC(), PeekD(), PeekQ()
добавлено: PokeC(), PokeD(), PokeQ()
добавлено: MemorySize() - вернуть размер блока памяти
добавлено: MoveMemory()
добавлено: CompareMemoryString(*Text1, *Test2 [Mode [, MaxLength [, Flags]]]) - Новый флаги в параметрах для сравнения UTF16/UTF8/Ascii
добавлено: MemoryStringLength() - Новый флаги в параметрах для поддержки UTF16/UTF8/Ascii

Примечание. Команды PeekS, PokeS, CompareMemoryString, MemoryStringLength теперь имеют параметр, который определяет формат строки. Возможные варианты: #PB_Ascii, #PB_Unicode или # PB_UTF8. Это позволяет вам работать со строками в памяти независимо от фактического режима String, с которым был скомпилирован исполняемый файл (Unicode или нет).

Engine3D

изменено: CreateMesh(#Mesh, MaximumVertex) - Новый параметр
изменено: MaterialAmbientColor(#Matrix1, -1) - -1 Новый параметр

добавлено: EntityRenderMode()
добавлено: WorldShadows(#PB_Shadow_Additive)
добавлено: ParticleEmitterDirection()
добавлено: GetEntityMass
добавлено: SetEntityMass
добавлено: GetEntityFriction
добавлено: SetEntityFriction
добавлено: EntityPhysicBody
добавлено: ExamineWorldCollisions
добавлено: NextWorldCollision
добавлено: CheckWorldCollisionEntity
добавлено: FirstWorldCollisionEntity
добавлено: SecondWorldCollisionEntity
добавлено: WorldGravity
добавлено: EnableWorldCollision
добавлено: EnableWorldPhysics
добавлено: Parse3DScripts

удалено: RotateParticleEmitter() (был бесполезен сейчас)

Window

добавлено: GetActiveWindow() - возвращает окно с фокусом
добавлено: DisableWindow(#Window, State) - отключить пользовательский ввод в окно
добавлено: GetWindowState(#Window) - получить состояние свернутое/развернутое
добавлено: SetWindowState(#Window, State)- установить состояние свернутое/развернутое
добавлено: StickyWindow(#Window, State) - сделать так, чтобы окно оставалось поверх всех остальных, даже если оно отключено
добавлено: SetWindowColor(#Window, Color)- установить цвет фона окна
добавлено: GetWindowColor(#Window) - получить текущий цвет фона окна
добавлено: SmartWindowRefresh(#Window, State) - включить или отключить функцию интеллектуального обновления

изменено: OpenWindow(#Window, x, y, Width, Height, Title$ [, Flags [, ParentID]]) - флаги теперь в конце и необязательны
изменено: WaitWindowEvent([Timeout]) - добавлено необязательное значение тайм-аута
изменено: ResizeWindow(#Window, x, y, width, height) - Параметры '-1' должны быть изменены на #PB_Ignore
изменено: SetWindowCallback(@procedure() [, #Window]) - добавлен необязательный параметр окна (для установки обратного вызова только для 1 окна)
изменено: ResizeWindow(#Window, x, y, Width, Height) - теперь так же, как ResizeGadget()
изменено: WindowID(#Window) - parameter no longer optional
изменено: WindowHeight(#Window) - Новый параметр
изменено: WindowWidth(#Window) - Новый параметр
изменено: WindowX(#Window) - Новый параметр
изменено: WindowY(#Window) - Новый параметр
изменено: WindowMouseX(#Window) - Новый параметр
изменено: WindowMouseY(#Window) - Новый параметр
изменено: WindowOutput(#Window) - Новый параметр

переименовано: EventWindowID() в EventWindow()
переименовано: EventGadgetID() в EventGadget()
переименовано: EventMenuID() в EventMenu()
переименовано: ActivateWindow() в SetActiveWindow(#Window)

удалено: MoveWindow()
удалено: DetachMenu()
удалено: UseWindow()
удалено: Константы совместимости, такие как #PB_EventCloseWindow (вместо этого используйте документированный #PB_Event_CloseWindow)

Gadget

добавлено: GetActiveGadget() - возвращает активный Gadget
добавлено: GadgetType(#Gadget) - возвращает константу, которая определяет, что это за Гаджет
добавлено: SetGadgetData(#Gadget, Value) - связать значение с Гаджетом (работает для всех Гаджетов.)
добавлено: GetGadgetData(#Gadget) - прочитать соответствующее значение
добавлено: SetGadgetItemData(#Gadget, Item, Value) - связать значение с элементом Гаджета (работает только для определенных Гаджетов)
добавлено: GetGadgetItemData(#Gadget, Item)
добавлено: SetGadgetColor(#Gadget, ColorType, Color)
добавлено: GetGadgetColor(#Gadget, ColorType)
добавлено: SetGadgetItemColor(#Gadget, Item, ColorType, color [, Column])
добавлено: GetGadgetItemColor(#Gadget, Item, ColorType [, Column])

изменено: ActivateGadget(#Gadget) is now SetActiveGadget(#Gadget)
изменено: ResizeGadget(#Gadget, x, y, width, height), -1 теперь должен быть изменен на #PB_Ignore

удалено: #PB_String_MultiLine

Индивидуальные изменения в Gadget:

CalendarGadget()
- поддерживает SetGadgetColor () со следующими типами colortypes:
#PB_Gadget_BackColor - фон
#PB_Gadget_FrontColor - текст для отображения дней
#PB_Gadget_TitleBackColor - фон названия месяца
#PB_Gadget_TitleFrontColor - цвет текста названия месяца
#PB_Gadget_GreyTextColor - цвет для дней не текущего месяца

ComboBoxGadget()
- Поддержка SetGadgetItemData()

ContainerGadget()
- поддерживает SetGadgetColor() для фона

DateGadget()
- поддерживает SetGadgetColor() с теми же значениями, что и CalendarGadget, чтобы раскрасить раскрывающийся календарь
- область ввода не может быть окрашена в это время

EditorGadget()
- поддерживает SetGadgetColor для переднего и фонового цветов
- Новый флаг: #PB_Editor_ReadOnly
- поддерживает SetGadgetAttribute() с #PB_Editor_ReadOnly, чтобы получить/установить флаг только для чтения

ExplorerListGadget()
- поддерживает SetGadgetColor () для переднего и фонового цветов и #PB_Gadget_LineColor
- Поддерживает GetGadgetItemAttribute (#Gadget, 0, #PB_Explorer_ColumnWidth, 2); возврат ширины столбца 2
- Поддерживает SetGadgetItemAttribute (#Gadget, 0, #PB_Explorer_ColumnWidth, 100, 2); установите ширину столбца от 2 до 100
- Поддерживает GetGadgetItemText(#Gadget, -1, 2) ; вернуть заголовок текста для столбца 2
- Поддерживает SetGadgetItemText(#Gadget, -1, "New Text", 2) ; изменить текст заголовка для столбца 2

ExplorerTreeGadget()
- Поддерживает SetGadgetColor() для переднего и фонового цветов и #PB_Gadget_LineColor

HyperLinkGadget()
- Поддерживает SetGadgetColor() для переднего цвета(фон всегда прозрачен)
- new Flag: #PB_Hyperlink_Underline - рисует линию под текстом (без подчеркивания шрифта)

ListIconGadget()
- Поддерживает SetGadgetColor() для переднего и фонового цветов и #PB_Gadget_LineColor#PB_ListIcon_GridLines)
- Поддерживает SetGadgetItemColor() для переднего и фонового цветов (можно установить для каждой ячейки индивидуально)
- Поддерживает SetGadgetItemData()
- Событие для обнаружения изменения флажка теперь #PB_EventType_Change
- Поддерживает GetGadgetItemAttribute(#Gadget, 0, #PB_ListIcon_ColumnWidth, 2) ; возвращает ширины столбца 2
- Supports SetGadgetItemAttribute(#Gadget, 0, #PB_ListIcon_ColumnWidth, 100, 2) ; установит ширину столбца от 2 до 100
- Supports GetGadgetItemText(#Gadget, -1, 2) ; возвращает заголовок текста для столбца 2
- Supports SetGadgetItemText(#Gadget, -1, "New Text", 2) ; изменяет текст заголовка для столбца 2

ListViewGadget()
- Поддерживает SetGadgetColor () для переднего и фонового цветов (не для отдельных элементов)
- Поддерживает SetGadgetItemData()
- Новые флаги:
#PB_ListView_Multiselect - разрешить множественный выбор
#PB_ListView_ClickSelect - множественный выбор + щелчок по элементу выбирает/отменяет выбор

MDIGadget()
- Дочерние окна MDIGadget больше не являются "GadgetItems", а представляют собой настоящие Окна PB. Это означает, что вы можете с ними использовать ЛЮБУЮ команду из библиотеки Window (кроме StickyWindow()). Это делает некоторые функции MDIGadget устаревшими, поэтому есть некоторые изменения:
- Гаджет больше не отправляет никаких событий: все события закрытия, изменения размера, активации принимаются как события окна.
- GetGadgetAttribute(), Get/SetGadgetItemAttribute, Get/SetGadgetItemState(), Get/SetGadgetItemText все больше не поддерживаются. Все это можно легко сделать с помощью команд библиотеки Window
- RemoveGadgetItem() больше не поддерживается, используйте CloseWindow().

Команды, используемые с MDIGadget, теперь только эти: (+ все библиотеки Window!)
- ClearGadgetItemList() : закрывает все дочерние окна
- CountGadgetItems() : получить количество дочерних окон в Гаджете
- GetGadgetState() : получить WindowID окна, находящегося в настоящее время на переднем плане Гаджета
- SetGadgetState() : установить конкретное окно на передний план или расположить дочерние окна (все как старый MDIGadget)
- AddGadgetItem() : создать MDI Child: работает так:
   AddGadgetItem(#MDI, #Window, Title$ [, ImageID [, Flags]])
     - #Window - Номер для нового окна (может быть #PB_Any!)
     - Title$  - новый заголовок окна
     - ImageID - Значок для окна (необязательно)
     - Flags   - Поддерживает большинство флагов для OpenWindow, если они не указаны, используются флаги MDI по умолчанию. 
   Неподдерживаемые флаги: #PB_Window_Borderless, #PB_Window_ScreenCentered, #PB_Window_WindowCentered
Примечание: теперь вы должны вызвать CreateGadgetList(), чтобы добавить элементы в дочерний элемент MDI, как в обычных окнах.

- SetGadgetColor() может использоваться с #PB_Gadget_BackColor для установки фонового цвета MDI
- SetGadgetAttribute() может использоваться с #PB_MDI_Image для установки фонового изображения, #PB_MDI_TileImage может включать или выключать режим мозаики изображения


PanelGadget()
- добавлен GetGadgetAttribute() с #PB_Panel_ItemWidth, #PB_Panel_ItemHeight (только для чтения) (на панели должна быть хотя бы одна вкладка, чтобы это работало)

ProgressBarGadget()
- поддерживает SetGadgetColor() для переднего и фонового цветов (не работает со скинами XP)
- поддерживает SetGadgetAttribute() с #PB_ProgressBar_Minimum, #PB_ProgressBar_Maximum

ScrollAreaGadget()
- поддерживает SetGadgetColor() для фонового цвета
- новый флаг: #PB_ScrollArea_Center - когда внутренний размер меньше внешнего, внутренняя область будет автоматически центрирована
- новые опции для SetGadgetAttribute(): # PB_ScrollArea_X / # PB_ScrollArea_Y для чтения / установки текущей позиции прокрутки.
- теперь генерирует событие при прокрутке.

ScrollBarGadget()
- Поддерживает SetGadgetAttribute() с #PB_ScrollBar_Minimum, #PB_ScrollBar_Maximum, #PB_ScrollBar_PageLength

SpinGadget()
- поддерживает SetGadgetColor для переднего и заднего цветов (для окрашивания области редактирования)
- Поддерживает SetGadgetAttribute() с #PB_Spin_Minimum, #PB_Spin_Maximum
- Новые флаги:
#PB_Spin_ReadOnly - StringGadget не редактируется, число можно изменить только стрелками
#PB_Spin_Numeric - SpinGadget автоматически обновит текст со значением состояния, поэтому SetGadgetText не требуется.
- EventType значения:
1 - кнопка вверх была нажата
-1 - кнопка вниз была нажата
#PB_EventType_Change - текст в поле редактирования был изменен

SplitterGadget()
- новые флаги для Get/SetGadgetAttribute(): #PB_Splitter_FirstGadget, #PB_Splitter_SecondGadget
С помощью GetGadgetAttribute() они возвращают Номер #Gadget сохраненного Гаджета
С помощью SetGadgetAttribute () вы можете разместить новый Гаджет в Splitter.

Примечание. Старый Гаджет не будет автоматически освобожден! (он будет выведен из сплиттера и в то же окно, что и сплиттер) Поэтому, если вы не хотите, чтобы старый Гаджет оставался, удалите его с помощью FreeGadget () Это позволяет переключать Гаджеты в сплиттере без необходимости повторного создания любого из них.

Таким образом, чтобы переместить Гаджет из одного разделителя в другой, сначала замените его в первом разделителе, а затем поместите во второй.

StringGadget()
- поддерживает SetGadgetColor() для переднего и фонового цвета

TextGadget()
- поддерживает SetGadgetColor() для переднего и фонового цвета

TrackBarGadget()
- поддерживает SetGadgetAttribute() с #PB_TrackBar_Minimum, #PB_TrackBar_Maximum

TreeGadget()
- поддерживает SetGadgetColor() для переднего и фонового цвета #PB_Gadget_LineColor
- поддерживает SetGadgetItemColor() для переднего и фонового цвета
- полностью поменял управление предметами. Больше нет узлов, просто непрерывный список, где у каждого элемента есть "подуровень"; Подуровни всех элементов определяют древовидную структуру следующим образом:
   + sublevel 0
   +-+ sublevel 1
   | | sublevel 1
   | +-+ sublevel 2
   | | sublevel 1
   | sublevel 0
- Новый параметр в AddGadgetItem: AddGadgetItem(#Gadget, Position, Text$ [, ImageID [, Flags]])
Параметр "Флаги" всегда требуется для TreeGadget и указывает подуровень, в который нужно поместить этот элемент.

Чтобы создать вышеуказанное дерево, вы делаете это:
   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)    
- новый GetGadgetItemAttribute() с #PB_Tree_SubLevel (только для чтения), чтобы получить подуровень любого элемента
- удалено: OpenTreeGadgetNode()
- удалено: CloseTreeGadgetNode()
- удалено: TreeGadgetItemNumber() - можно легко смоделировать с помощью GadgetItemID() + прогон списка элементов
- удалено: CountTreeGadgetNodeItems() - можно легко эмулировать, сравнивая подуровень элементов