PureVision Manual
PureVision Manual
PureVision
Table of Contents
          Foreword                                                                                                                                                                         1
 Part I PureVision                                                                                                                                                                        3
      1 MenuBar                    ................................................................................................................................... 4
                 File             .......................................................................................................................................................... 4
                      New Project  ......................................................................................................................................................... 4
                      Open Project ......................................................................................................................................................... 4
                      Save Project ......................................................................................................................................................... 5
                      Save Project .........................................................................................................................................................
                                       As                                                                                                                                                    5
                      Archive Project
                                   ......................................................................................................................................................... 5
                      Save Current .........................................................................................................................................................
                                        Form                                                                                                                                                 5
                      Merge Form   .........................................................................................................................................................
                                      with Project                                                                                                                                           5
                      Export Project
                                   ......................................................................................................................................................... 6
                      Crash Protection
                                   ......................................................................................................................................................... 6
                      Confirm on.........................................................................................................................................................
                                     Quit                                                                                                                                                    7
                      Quit         ......................................................................................................................................................... 7
                 Forms            .......................................................................................................................................................... 7
                      Default Interface
                                   .........................................................................................................................................................
                                             Positions                                                                                                                                       8
                      Tool Windows .........................................................................................................................................................
                                         on Top                                                                                                                                              8
                      Enable DPI.........................................................................................................................................................
                                     Aware GUI                                                                                                                                               8
                      Display GroupBin
                                   ......................................................................................................................................................... 8
                          Using the GroupBin       ......................................................................................................................................... 9
                      Replace with
                                 .........................................................................................................................................................
                                       BubbleTips                                                                                                                                          10
                      Include Images
                                 .........................................................................................................................................................
                                           in EXE                                                                                                                                          10
                      Include PureSkin
                                 .........................................................................................................................................................
                                              in EXE                                                                                                                                       11
                      Enable Gadget
                                 .........................................................................................................................................................
                                           Highlighting                                                                                                                                    11
                      Edit with XP
                                 .........................................................................................................................................................
                                      Skins                                                                                                                                                11
                      Development.........................................................................................................................................................
                                        Platform                                                                                                                                           12
                      Use Language
                                 ......................................................................................................................................................... 12
                 Tools          .......................................................................................................................................................... 12
                      PureTrans.........................................................................................................................................................
                                    Language Manager                                                                                                                                       13
                      Install PVGadgets
                                 .........................................................................................................................................................
                                               Library                                                                                                                                     14
                      Print Project
                                 .........................................................................................................................................................
                                      Data Sheet                                                                                                                                           14
                      PureSkin .........................................................................................................................................................
                                 Maker                                                                                                                                                     15
                      PurePoint.........................................................................................................................................................
                                   Maker                                                                                                                                                   16
                      Font Manager
                                 ......................................................................................................................................................... 17
                 Plugins        .......................................................................................................................................................... 19
                 Help           .......................................................................................................................................................... 20
                      Help       ......................................................................................................................................................... 20
                      PureVision .........................................................................................................................................................
                                    Website                                                                                                                                                20
                      Check for.........................................................................................................................................................
                                  Online Updates                                                                                                                                           20
                      Disable AutoUpdate
                                 .........................................................................................................................................................
                                                   Checking                                                                                                                                21
                      Enter Registration
                                 .........................................................................................................................................................
                                               Key                                                                                                                                         21
                      About      ......................................................................................................................................................... 21
      2 Extended MenuBar
                   ................................................................................................................................... 22
                 MenuBar Editor
                              .......................................................................................................................................................... 23
                 ToolBar Editor
                              .......................................................................................................................................................... 23
      3 Gadget Creator
                   ................................................................................................................................... 25
                        PureBasic Gadgets
                                    .......................................................................................................................................................... 25
                        API PVGadgets
                                    .......................................................................................................................................................... 29
             4 Gadget Tree ................................................................................................................................... 30
                        Copy          .......................................................................................................................................................... 31
                        Paste         .......................................................................................................................................................... 31
                        Duplicate     .......................................................................................................................................................... 32
                             Duplicate.........................................................................................................................................................
                                        Offset                                                                                                                                                   32
                        Grouping      .......................................................................................................................................................... 33
                        Hiding        .......................................................................................................................................................... 34
                        Delete        .......................................................................................................................................................... 34
                        Refresh Display
                                      .......................................................................................................................................................... 35
             5 Properties              ................................................................................................................................... 35
                        Dynamic Resizing
                                     .......................................................................................................................................................... 35
                        Parent/Child Forms
                                     .......................................................................................................................................................... 38
                        Changing Fonts
                                     .......................................................................................................................................................... 38
                        Gadget Coloring
                                     .......................................................................................................................................................... 39
                        StatusBars .......................................................................................................................................................... 40
                        PanalGadgets.......................................................................................................................................................... 40
                        Code Inject .......................................................................................................................................................... 41
                         PVGadgets_PieChart     ......................................................................................................................................... 61
                         PVGadgets_FreePieChart ......................................................................................................................................... 62
                     Refresh ......................................................................................................................................................... 62
                         PVGadgets_Refresh      ......................................................................................................................................... 62
                         PVGadgets_RefreshWindow......................................................................................................................................... 63
                     Misc Functions
                                ......................................................................................................................................................... 63
                         Window Functions       ......................................................................................................................................... 63
                              PVGadgets_WindowFreeze  ................................................................................................................................... 63
                              PVGadgets_WindowUnfreeze................................................................................................................................... 64
                              PVGadgets_ToolWindow    ................................................................................................................................... 64
                              PVGadgets_WindowTransparent
                                                      ................................................................................................................................... 64
                              PVGadgets_WindowTop     ................................................................................................................................... 64
                              PVGadgets_WindowReset   ................................................................................................................................... 64
                         Path Functions ......................................................................................................................................... 64
                              PVGadgets_CurDir        ................................................................................................................................... 64
                              PVGadgets_TempDir       ................................................................................................................................... 64
                              PVGadgets_ExeDir        ................................................................................................................................... 65
                         ListIcon Functions     ......................................................................................................................................... 65
                              PVGadgets_CountListIconColumns
                                                      ................................................................................................................................... 65
                              PVGadgets_GetListIconColumnWidth
                                                      ................................................................................................................................... 65
                              PVGadgets_SetListIconColumnWidth
                                                      ................................................................................................................................... 66
                              PVGadgets_JustifyListIconColumn
                                                      ................................................................................................................................... 66
                              PVGadgets_LastListIconRow
                                                      ................................................................................................................................... 67
                              PVGadgets_SelectListIconRow
                                                      ................................................................................................................................... 67
                              PVGadgets_CreateListIconImageList
                                                      ................................................................................................................................... 68
                              PVGadgets_AddListIconImageList
                                                      ................................................................................................................................... 68
                              PVGadgets_FreeListIconImageList
                                                      ................................................................................................................................... 69
                              PVGadgets_ChangeListIconImage
                                                      ................................................................................................................................... 69
                              PVGadgets_ListIconTitle ................................................................................................................................... 70
                         Format Functions       ......................................................................................................................................... 70
                              PVGadgets_FormatNumber  ................................................................................................................................... 70
                         Mutex Functions......................................................................................................................................... 71
                              PVGadgets_StartOnce     ................................................................................................................................... 71
                         Error Functions ......................................................................................................................................... 71
                              PVGadgets_APIError      ................................................................................................................................... 71
                 PureSkin      .......................................................................................................................................................... 71
                     PureSkin ......................................................................................................................................................... 71
                     PureSkinMem......................................................................................................................................................... 72
                     PureSkinHide
                                ......................................................................................................................................................... 73
                 PurePoint     .......................................................................................................................................................... 74
                     PurePoint......................................................................................................................................................... 75
                     PurePointMem
                                ......................................................................................................................................................... 75
                     UsePurePoint
                                ......................................................................................................................................................... 76
                     SysPurePoint
                                ......................................................................................................................................................... 77
                     FreePurePoint
                                ......................................................................................................................................................... 77
                     ResetPurePoint
                                ......................................................................................................................................................... 78
                     PurePointChild
                                ......................................................................................................................................................... 79
                     PurePointX ......................................................................................................................................................... 79
                     PurePointY ......................................................................................................................................................... 80
                     PurePointXX......................................................................................................................................................... 81
                     PurePointYY......................................................................................................................................................... 82
      2 PVGadgets QuickStart
                  ................................................................................................................................... 83
Index 124
Foreword
                 PVGadgets is a collection of
                  addon functions designed
                   specifically to work with
                PureVision and the PureBasic
                          Compiler.
       I
    3      PureVision
1       PureVision
        The Professional Form Designer for PureBasic
        PureVision provides you with a quick and easy way to create and manage forms while designing
        professional commercial applications.
        Not only can you manage entire projects, PureVision allows you to export individual Forms from large
        projects and merge them with other projects. By reusing existing forms, this saves you both time and
        money.
        PureVision comes complete with tools for giving your projects that "competitive edge".
        Add icons to MenuBars, create custom Skins for your Forms, design custom Pointers, manage
        Language Files for multilingual support and much more !!!
        Have even more power at your fingertips by accessing PVGadgets, a custom library designed
        specifically for those wanting more out of their application.
        PureVision is the choice of professionals and is used to design and create thousands of dollars worth
        of commercial software on a daily basis.
Features:
           Support:
             · Email:           support@reelmedia.org
             · Web:             http://purevision.reelmedia.org
1.1        MenuBar
           The PureVision MenuBar is used for various file operations, program settings, and accessing extra
           tools.
To use the MenuBar, simply select the appropriate heading and then select the required action.
1.1.1 File
           The File menu allows you to perform various file related operations in PureVision.
1.1.1.1    New Project
           Selecting New Project will delete any currently loaded project and start a new project, beginning with a
           new Form.
1.1.1.2    Open Project
           Selecting Open Project will allow you to load a PureVision (GUI) project into PureVision.
You will be asked to select the appropriate GUI file using a file selector.
          You can also open a PureVision GUI file by double clicking on a GUI file in Windows Explorer if
          PureVision has not yet been started.
          The current filename will be used when saving. If a filename does not yet exist, you will be prompted
          to enter one.
1.1.1.4   Save Project As
          Selecting Save Project As will save the current PureVision project in the GUI format by asking for a
          filename and location, regardless of what filename has currently been set.
1.1.1.5   Archive Project
          Selecting Archive Project will compress your project file along with any resources used by your project
          into a single ZIP file.
          You will first be asked to save the current PureVision project in the GUI format by selecting filename
          and location.
          For example, if you have created an "About Box" in a previous project and wish to reuse it without
          having to rebuild the entire Form. Simply export the "About Box" from the old project and use Merge
          Form with Project to merge it into your new project.
           PureVision will generate Source Code for all Forms in the Export List which contain a check. If your
           Project contains Forms you do not wish to have exported, simply remove the check from any Form you
           do not want exported.
           By default, the first Form in the Export List will be selected. The first Form is always considered the
           Main Form and an Event Loop will be generated for this Form if Generate Event Loop Code has been
           checked. To have PureVision generate an Event Loop for a different Form, simply select another
           Form in the Export List.
           By default PureVision exports code using Constants. If you prefer using Global variables assigned with
           #PB_Any, you can enable this export option by checking "PB Any Support/No Constants".
           If you would like to export your Project with support for multiple Languages, check "Build and Embed
           Language File". This will embed the current Project Language as well as export a Language File
           (.Lang) which you can easily edit using the PureTrans Language Manager.
           By default PureVision will export your Project as Unicode UTF8 allowing support for extended
           characters. If you uncheck this option PureVision will export your Project as ASCII.
           If an Exported Project or an Event Loop for an Exported Project already exists, you will be prompted to
           "Confirm Overwrite". This is a safety feature giving you a last chance before overwriting any existing
           data. If you DO NOT wish to be prompted every time PureVision is about to overwrite existing data,
           you can turn this warning feature off by removing the check in the "Confirm on Overwrite" check box.
        If PureVision does not shut down properly you will have the option to restore this snapshot when
        PureVision is restarted.
Enabling this option may impact performance due to disk writes at set intervals.
        If Confirm on Quit is disabled, PureVision will close instantly when you tell it to exit, regardless if any
        project data exists.
1.1.1.11 Quit
        Selecting Quit will close the PureVision application.
1.1.2 Forms
The Forms menu allows you to customize various Form settings and PureVision options.
           To give meaningful names to the various Groups, right mouse click on the Group you wish to name
           and select Rename Group. Enter the new name of the Group and press Ok.
           To add Gadgets to a Group, first select the Group you wish to add to. Then put a check in front of the
           Gadgets you wish to add using the Gadget Tree.
           Finally, right mouse click on the GroupBin and select Add Group to GroupBin.
           The selected Gadgets will be added to the Group and can now quickly be re-selected by simply clicking
           on the name of the Group they belong to.
To remove a Gadget from a Group, select the Gadget you want to remove and press the - button.
Enabling this option forces the tips to be displayed in a fancy Bubble instead of the standard box.
           PureVision has an Image Optimizing routine which prevents duplicate images from being included
           many times and bloating you application.
If this option is disabled, all images will be loaded from your applications sub folder called "\Images".
          PureSkins that are not included in the EXE are stored in a sub folder of your application called "\Skins"
1.1.2.8   Enable Gadget Highlighting
          When Gadget Highlighting is enabled, the Gadget you are currently editing will had a colored box
          around it. A green box indicates your are in resize mode and a blue box indicates you are in move
          mode.
           If you are running PureVision on an operating system other than Windows XP, your forms will look
           similar to "disabled" even if Edit with XP Skins is enabled.
           You can also use PureTrans (included with PureVision) to create your own language file if one does
           not currently exist.
1.1.3      Tools
           The Tools menu provides access to addons which help create and enhance Forms within your project.
          After selecting or entering a language file name, a form will appear with the text for all Gadgets. The
          current language will be located on the left and the new language will appear on the right.
          Double left click on the text you wish to translate. You will be prompted to enter the new text.
          Enter the new translated text and press the Ok button.
Once your list of text has been translated, press the Save button to save all changes.
          There will be times after modifying a project, where the default language no longer lines up to the
          translated language. Use the Insert and Delete keys to move the entire translated list up or down
          starting at the selected line.
           Note: The PureTrans Language Manager comes as a separate module than can be run without
           having PureVision. This allows you to give a copy of the PureTrans Language Manager (along with
           your language file) to the person or group who is doing the translating for you and they simply give
           back the translated file that has been saved.
           To compile source code containing PVGadgets functions, you must first have the PVGadgets add on
           Library installed. Select Install PVGadgets Library and locate the main PureBasic folder. If you have
           the PureBasic editor running, it must be restarted for the new library to be recognized.
           PureVision will automatically install the 64bit version of PVGadgets for the 64bit version of PureBasic
           and the 32bit version of PVGadgets for the 32bit version of PureBasic.
1.1.3.3    Print Project Data Sheet
           The Project Data Sheet gives you a quick overview of all the Constant names you have used in your
           Project. By printing this information, you will have the ability to quickly and easily look up what names
           you have used when you are manually writing code.
          To create a PureSkin simply select PureSkin Maker from the Tools menu, locate the bitmap file you
          wish to convert to a PureSkin, then press the Convert button.
          PureSkin Maker will display the selected bitmap. Use the color picker icon to select the color of the
          bitmap you wish to be transparent. (This example image is a 357KB bitmap)
PureSkin Maker will display the bitmap with selected color removed.
            If you are pleased with the results, right click on the skin and select "Save PureSkin". The skin will be
           saved to the PureSkin (PVS) format. (This example skin saves to a 33KB PureSkin file using file
           compression)
          PurePoint Maker is used to create PurePoint (.pvp) files for use with the PurePoint User Library,
          allowing you to easily change your Mouse Pointer.
          Use the mouse to select Black/White/Transparent and then draw on the PurePoint Grid by pressing the
          Left Mouse Button.
          Press the Right Mouse Button to set a click point. This will determine the active part of the PurePoint
          and will be outlined in red.
          The Font Manager will display a list of all Gadgets which allow for Font Attributes to be Modified.
          Select the Gadgets you wish to modify by using the Left Mouse Button. Multiple Gadgets may be
          selected by combining the Left Mouse Button with the CTRL or SHIFT keys.
           If you would like the selected Gadgets to revert to Windows Default Settings, set the Font Size to 0
           (zero).
1.1.4   Plugins
        PureVision provides a simple way to design your own Plugins through a special PureBasic User Library
        called PV_Plugins.
        When a Plug in is designed and places in the PureVision/Plugins folder, it can be accessed from the
        Plugins option in the MenuBar.
By selecting Plugin Info from the drop down menu, you can view information specific to that Plugin.
To run a specific Plugin, select it from the drop down menu by pressing the left mouse button.
For information on how to use the PV_Plugins User Library, see the PVPlugins User Library section.
1.1.5 Help
           The Help menu gives you access to various help and support resources as well as application
           information.
1.1.5.1    Help
           Selecting Help opens the windows help file containing all the information you are reading here. For
           quick reference, you can open the help file at any time while using PureVision.
1.1.5.2    PureVision Website
           Selecting PureVision Website will open your default web browser and take you to the official
           PureVision website.
The PureVision website contains the latest software updates as well as a support forum for extra help.
           http://www.reelmedia.org/purevision
1.1.5.3    Check for Online Updates
           Check for Online Updates will connect to the PureVision Version Server and compares your version
           of PureVision to the newest version available for download. This gives you a quick and easy way to
           ensure you are always using the latest and best software.
          If you are using an old version of PureVision, you will be prompted to go to the PureVision website to
          download the newest version.
1.1.5.4   Disable AutoUpdate Checking
          Each time you run the software, PureVision will automatically connect to the Internet and check to
          make sure you are running the latest version.
          If you would like to disable this feature, simply put a check mark beside "Disable AutoUpdate
          Checking".
          You can enable this feature at any time or you can manually check for updates but selecting
          "Check for Online Updates".
1.1.5.6   About
          Selecting About will display the current PureVision version you are using along with personal license
          information.
           The X,Y properties of the currently selected Form/Gadget are displayed along with Width and Height
           information.
           The Move/Size toggle button allows you to change between Gadget Moving and Gadget Sizing on your
           Form. When you are in Moving mode, the button will display    and when you are in Sizing mode it
           will display  .
           For quick access when working on Forms, you can also press the middle mouse button to toggle
           between Move and Size. Once you are in Move or Size mode, you can use the right mouse button to
           Move or Size the selected Gadget. You can also use the arrow keys to Move or Size the selected
           Gadgets.
           This button will add a new Form to your current project. If you have more than one Form in your
           project, use the Form Selector Drop Box to select the name of the Form you wish to view/edit.
           This button will delete the current selected Form from your project. Once a Form is deleted, all
           Gadgets contained on that Form will also be deleted.
           While working on Gadgets you may wish to view or change the Form properties. Pressing this button
           will change to Form Properties mode. You can also press the Home key.
           All Forms can contain a MenuBar. To build a MenuBar, press the MenuBar Editor button to start the
           MenuBar Editor. Once a MenuBar has been created, check the Active box to display the MenuBar. If
           you create a MenuBar but later decide not to use it, simply uncheck the Active box and the MenuBar
           will not be exported with the source code.
If you add icons to your MenuBar, you can enable them by checking the Add Icons button.
           All Forms can also contain a ToolBar. To build a ToolBar, press the ToolBar Editor button to start the
           ToolBar Editor. After creating a ToolBAr, check the Active box to activate and display the ToolBar. If
           you create a ToolBar but later decide not to use it, simply uncheck the Active box and the ToolBar will
           not be exported with the source code.
        Enter the name of the MenuBar item you wish to create along with the text you wish to be displayed. If
        you would also like an icon displayed, press the ... button and select an icon. Press Add when you
        have entered all the appropriate information and you will see your item added to the Menu Title
        column.
        If a current MenuBar item is highlighted when the Add button is pressed, the new item will be added
        after the highlighted item.
        Use the Up and Down buttons to position the MenuBar item in the proper location.
        Use the Left and Right buttons to make your MenuBar item a SubMenu item.
You can edit any MenuBar items by double left clicking on the appropriate row.
Make any required changes and press the Modify button to save the changes.
You can remove MenuBar items by selecting the appropriate row and pressing the Delete button.
           Button Order
           The order of the ToolBar Buttons can be changed by selecting the Button and using either the Up and
           Down arrow buttons in the ToolBar Editor Interface or using the PGUP and PGDN keys on the
           keyboard.
           Delete Button
           To Delete a ToolBar Button, select the Button you wish to delete and either press the Delete Button in
           the ToolBar Editor Interface or press the DEL key on the keyboard.
           Add Button
           To Add a ToolBar Button, select the type of button you wish to add. This can be a Standard Button
           (pre-made) or an Image Button (custom image). If you wish to have the button toggle, check the
           Toggle option. After entering an ID Name and any other additional information, press the Add button to
           add the ToolBar Button to the list.
           If you select an item in the ToolBar list, your new ToolBar Button will be added at that location and all
           items after your selected location will be moved down in the list.
           Edit Button
           Editing an existing ToolBar Button can be performed by double-left clicking the appropriate Button in
           the List.
           The Button will be removed from the List and the Button data will be moved down into the ToolBar
           Editor. You then have the option of making changes and putting the Button back into the List by
           pressing the Add Button or you can put the Button back into the List at a different location by selecting
           a location in the List and then pressing the Add Button.
           (The Button will be added at the selected location and all other Buttons will be moved down the list
        When you have finished adding your ToolBar Buttons, you can view them in your Form by closing the
        ToolBar Editor and activating the ToolBar from the PureVision main interface.
        Native PureBasic Gadgets are located in the top half of the Gadget Creator window and
        API/PVGadgets are located in the bottom half.
        The grid size selector at the bottom of the Gadget Creator window allows you to select the grid size on
        your PureVision Form that Gadgets will "Auto Snap" to. The increments are 1, 5, 20, and 50 pixels.
        Creates a TextGadget.
        Used for adding text labels to a Form.
           Creates a StringGadget.
           Used for allowing user to input data.
           Creates an EditorGadget.
           Used for inputting or displaying multiple lines of data.
           Creates a ButtonGadget.
           The button can contain text and triggers an event when pressed.
           Creates a ButtonImageGadget.
           This button can contain a graphic image and triggers an event when pressed.
           Creates a CheckBoxGadget.
           This gadget displays a check mark when enabled and an empty box when disabled.
           Creates an OptionGadget.
           These gadgets are placed in groups and are used when a single choice is needed from many options.
           Selecting one option in a group deselect's all other options.
Creates a TreeGadget.
Creates a ListViewGadget.
           Creates a ListIconGadget.
           The active part of a ListIconGadget is the title bar section. Right click this area to Move or Size this
           Gadget.
Creates a Frame3DGadget.
Creates a ComboBoxGadget.
Creates a TrackBarGadget.
Creates a SpinGadget.
Creates a ProgressBarGadget.
     Creates a PanelGadget.
     A PanelGadget contains Tabs which more Gadgets can be placed. Select the Tab in the GadgetTree
     to place Gadgets on that Tab.
     Container type Gadgets (PanelGadget, ScrollAreaGadget, ContainerGadet) cannot be placed inside a
     PanelGadget.
Creates a CanvasGadget.
Creates an ImageGadget.
     Places a DirectX screen on the current Form. A single project can only contain one instance of a
     DirectX screen.
     Exported code will be OpenWindowedScreen()
Creates an IPAddressGadget.
Creates a WebGadget.
Creates a HyperLinkGadget.
Creates an ExplorerListGadget.
Creates an ExplorerTreeGadget.
Creates an ExplorerComboGadget.
Creates a ScrollGadget.
           Creates a ScrollAreaGadget.
           A ScrollAreaGadget contains an Area which more Gadgets can be placed. Select the Area in the
           GadgetTree to place Gadgets on that Area.
           Container type Gadgets (PanelGadget, ScrollAreaGadget, ContainerGadet) cannot be placed inside a
           ScrollAreaGadget.
           Creates an ContainerGadget.
           A ContainerGadget contains an Area which more Gadgets can be placed. Select the Area in the
           GadgetTree to place Gadgets on that Area.
           Container type Gadgets (PanelGadget, ScrollAreaGadget, ContainerGadet) cannot be placed inside a
           ContainerGadget.
Creates a CalendarGadget.
Creates a DateGadget.
        Creates an InputGadget.
        This gadget is very similar to the standard StringGadget but has a scroll bar and allows multiple lines of
        text.
        Creates an AnimGadget.
        An AnimGadget can display a number of Windows animations like the animated search icon, files
        being copied animation, files being thrown into trash animation, etc.
        NOTE: This gadget will NOT display built in Windows animations on version of Windows higher than
        Windows XP. If you need this Gadget to work on ALL versions of Windows you will need to supply
        your own animation.
        Creates a PureSkinGadget.
        Once a PureSkin Gadget is applied to a Form, a PureSkin is then assigned to the Gadget and the
        Form is instantly skinned. PureSkins are created using the built in PureSkin Maker.
        Creates a CanvasGadget.
        This Gadget is a simple colored box that allows you to draw on or insert images into. The
        PVGadgets_Canvas command allows you to easily convert a Canvas Gadget into a special image
        button that changes when the mouse passes over it.
        Creates a ProgressBarGadget.
        This progress bar allows you to set starting and ending colors, creating very nice gradients. Text can
        also be enabled showing percentage left. It is easily controlled using the PVGadgets_ProgressBar
        command.
           Creates a PieChartGadget.
           The PieChart Gadget allows you to create a Pie Chart progress indicator. Text can also be enabled
           showing percentage left. It is easily controlled using the PVGadgets_PieChart command.
           When you select a Gadget in the Gadget Tree, the Gadget is also highlighted on the Form if
           Enable Gadget Highlighting is enabled. You can also select a Gadget on a Form using the left or right
           mouse button and the Gadget selected will also be highlighted in the Gadget Tree.
           Additional Gadget Tree options are displayed by pressing the right mouse button over the Gadget
           Tree window.
1.4.1   Copy
        To Copy a Gadget, select the Gadget you wish to copy and press CTRL+C. You can also right
        mouse click on the Gadget Tree to display the Gadget Tree Menu and select Copy Selected
        Gadgets.
        If you wish to copy more than one Gadget at a time, use the Gadget Tree and place a check in front of
        all Gadgets to would like to copy. Then press CTRL+C to copy them to the PureVision clipboard.
1.4.2   Paste
        To Paste a Gadget from the PureVision clipboard to the current Form, press CTRL+V. You can also
        right mouse click on the Gadget Tree to display the Gadget Tree Menu and select Paste Gadgets.
        When a Gadget is pasted from the PureVision clipboard, it is automatically given a unique name since
        duplicate names will give errors when the exported project is compiled. There may be times when you
        are pasting Gadgets from one form to another and you would like to keep the original names because
        the original Gadgets will be deleted.
        To do this, right mouse click on the Gadget Tree to display the Gadget Tree Menu and select Disable
        Unique Names (a check will appear when this option is selected). Next paste the Gadgets from the
        PureVision clipboard using CTRL+V. The Gadgets will be placed on the Form and will have their
        original names.
1.4.3      Duplicate
           To quickly Duplicate a Gadget, select the Gadget you wish to duplicate and press CTRL+D. You can
           also right mouse click on the Gadget Tree to display the Gadget Tree Menu and select Duplicate
           Selected Gadgets.
           The selected Gadget will be instantly copied and pasted as the offset specified in the Duplicate Offset
           settings.
           If you wish to duplicate more than one Gadget at a time, use the Gadget Tree and place a check in
           front of all Gadgets to would like to duplicate. Then press CTRL+D to duplicate them on your Form.
A window will appear allowing you to adjust the X and Y offset in pixels.
        If you enter a value of 25 as the Y-Offset, the Gadget will be placed on the same X axis as the original
        Gadget but will be placed 25 pixels to the right.
1.4.4   Grouping
        Whenever you use the Gadget Tree and place a check in front of a Gadget, you are grouping Gadgets.
        When Gadgets are grouped, you are able to Move, Size, Copy, Duplicate many Gadgets at one time.
        To Move or Size a Group of Gadgets, select the Gadgets you wish to be in the Group (or select the
        predefined Group from the Group Bin) and then use the arrow keys to Move or Size the Gadgets.
        Right mouse click on the Gadget Tree to display the Gadget Tree Menu and use will see a number of
        options for Grouping Gadgets.
1.4.5      Hiding
           To have PureVision export code to create a Gadget but not display it on your Form, you can choose to
           Hide the Gadgets. You can then use the HideGadget command to hide or display the Gadgets when
           you wish.
           To Hide a Gadget or Group of Gadgets, Group the Gadgets you wish to hide and press ALT-H. You
           can also right mouse click on the Gadget Tree to display the Gadget Tree Menu and select Hide
           Grouped Gadgets. The Gadgets will still be part of your Project but will not be displayed on the Form.
Gadgets that have been hidden will have their icon changed to in the Gadget Tree.
           To Unhide a Gadget or Group of Gadgets, Group the Gadgets you wish to unhide and press ALT-U.
           You can also right mouse click on the Gadget Tree to display the Gadget Tree Menu and select
           Unhide Grouped Gadgets.
           You can also Hide and Unhide individual Gadgets using the Properties Window.
           Select the appropriate Gadget and check or uncheck the Hide box.
1.4.6      Delete
           To Delete a Gadget from your Form, select the Gadget you wish to delete and press the DEL key. You
           can also right mouse click on the Gadget Tree to display the Gadget Tree Menu and select Delete
           Current Gadget.
1.5     Properties
        The Properties Window allows you to modify the various properties of Forms and Gadgets.
        The properties you are allowed to modify will depend on the Form or Gadget you currently have
        selected.
        To tell PureVision you would like a Gadget to Dynamically Resize, first add the SizeGadget flag or the
        MaximizeGadget flag to your Form. If either of these flags are not set, your Form will not be exported
           Next place a Gadget on your Form and press the     button in the Properties Window next to the ID
           Name of your Gadget. Finally set the Resizing Properties to determine how you would like the Gadget
           to Move and Size.
           Example:
           Lets say you would like this Form to resize to this one...
           First display the Form Properties by pressing the    button in the Extended MenuBar and set the
           SizeGadget for that Form. Then press the       button and tell PureVision you would like the Form to
           Size both Horizontally and Vertically.
           Starting with the EditorGadget, select this Gadget on your Form and press the      button. We want the
           EditorGadget to get bigger in size both Horizontally and Vertically when the Form is resized so we need
           to check both these options.
     The ButtonGadget we have called Print does not need to change in size but it does need to move
     Vertically when the Form is resized. Check the Move box to allow Vertical movement only.
If you allowed both Horizontal and Vertical Movement, the result would be this...
     Notice how the Print ButtonGadget moves both Horizontally and Vertically when the Form is resized.
     By NOT allowing Horizontal Movement, the Gadget would be locked in place on the Horizontal axis
     (which is the result we are looking for in this example).
     The ButtonGadget we have called Save does not need to change in size but it does need to move both
     Horizontally and Vertically when the Form is resized.
If any Dynamic Resizing Properties have been set for a Form or Gadget, the Dynamic resize button will
change from to .
           Once you have created some Forms, select the Form you wish to be the Child Form by using the Form
           Selector drop box in the Extended MenuBar. Next press the   button in the Properties Window.
The Select Parent Window will appear and you can select the Parent Form from the drop box.
           After selecting the Parent Form, press Ok and the current Form will become a Child of the selected
           Parent Form. When a Form has been made a Child Form, the Parent/Child button will change to .
           The Font Selector will appear and you can select new fonts, styles and sizes.
           When the default Font properties have been changed, the Font properties button will change to    .
To reset the fonts back to their default settings, set the font size to 0 and press OK.
Note: The color selector will only affect certain Gadgets that allow their color to be changed.
        Setting the Back color to 0 will tell PureVision to use the default Form color as the Back color. In some
        situations, this will give an undesired result.
        In this image, the Back color is set to use the default Form color. The TextGadget overlaps the
        ImageGadget and by using the default Form color, we see a solid box around the text.
        To use a transparent Back color, press the - key on the number pad. The Back color will show as -1
        and tells PureVision to create a transparent Back color.
        Note: A transparent Back color is not refreshed when the text is changed. If you change your text
        using SetGadgetText, you must remember to refresh your entire Form after changing or the new text
1.5.5      StatusBars
           The StatusBar is part of the Form Properties.
           By default the Tab/Fields in the Properties tool window is set to 0, meaning there is no StatusBar
           added to your form.
           Change this number to higher than 0 to enable the StatusBar with the number of Tabs/Fields you wish
           displayed.
           If you are creating a resizable Form, you can have the StatusBar automatically resize with the Form by
           checking the Autosize Statusbar option.
           Once Tabs/Fields have been added to a StatusBar, the Tabs/Fields tool window will display the name
           of each field along with the field size. To edit this information, double click on the appropriate field with
           the left mouse button.
           Note: If you would like to assign the #PB_Ignore variable to the Statusbar Width, set the field size to
           zero.
1.5.6      PanalGadgets
           The PanelGadget is a special container consisting of multiple tabs, each tab holding any number of
           other Gadgets.
        To delete a Tab from a Panel, select the Tab in the Gadget Tree that you wish to delete and press the
        DELETE key on the keyboard .
        NOTES:
        (1) When a Tab is deleted, all Gadgets on the Tab are also deleted. When a PanelGadget is deleted,
        all Tabs and their Gadgets are also deleted.
        (2) Container type Gadgets cannot currently be placed in other container type Gadget. For example,
        you cannot place a PanelGadget inside a ContainerGadget or a ScrollArea Gadget inside a Panel
        Gadget.
        (3) Tab order can be arranged within a PanelTab but PanelTabs cannot be reordered.
        When working with a Form, Code Inject allows code to be injected on Window Close, Windows Exit,
        Outer Loop and Inner Loop.
The following image shows where code is injected when using each of the Form Injection options.
     When working with a Gadget like a ButtonGadget, Code Inject allows code to be injected on Left Click,
     Outer Loop and Inner Loop.
The following image shows where code is injected when using each of the Gadget Injection options.
     Visit the PureVision website to view a view on using the Code Inject function.
     https://reelmedia.org/purevision/index.php/support
       II
    47       PureVision
          This reference is for those wanting to understand why PureVision creates and exports the syntax it
          does and how to implement these functions manually when customizing and fine tuning your final
          source code.
          PVDynamic
          PVGadgets
          PureSkin
          PurePoint
2.1.1     PVDynamic
          PVDynamic functions give PureVision the ability to Dynamically Resize/Move/Color/Lock Forms and
          Gadgets, turning an ordinary Form into a highly configurable dynamic one.
          PVDynamic_AddWindow
          PVDynamic_ColorGadget
          PVDynamic_AddGadget
          PVDynamic_AddColorGadget
          PVDynamic_FreeColorGadget
          PVDynamic_AddStatusBar
A full Initialization & Callback loop in your main source code might look like this:
           ;-Init Includes
           XIncludeFile "Example_Constants.pb"
           XIncludeFile "Example_Windows.pb"
           Procedure SizeWindowHandler()
            PVDynamic_Resize(WindowID(EventWindow()))
           EndProcedure
           BindEvent(#PB_Event_SizeWindow,@SizeWindowHandler())
           Procedure WindowCallback(WindowID,Message,wParam,lParam)
             ReturnValue=#PB_ProcessPureBasicEvents
             If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or
             Message=#WM_CTLCOLORLISTBOX
                ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
             EndIf
             ProcedureReturn ReturnValue
           EndProcedure
           If you have made a number of changes to your project regarding Dynamic Resizing and your Event
           Loop already exists from an earlier Export, make sure the SizeWindowHandler() Procedure is at the
           beginning of your Main Event Loop.
           If you are updating an existing Project and are unable to Export your original GUI File, you can
           manually edit your "_Window.pb" file.
           Any line containing PVDynamic_AddLockWindow, change to the following...
           PVDynamic_AddLockWindow(#Window_Form1,1) -->
           WindowBounds(#Window_Form1,WindowWidth(#Window_Form1),WindowHeight(#Window_Form1),
           WindowWidth(#Window_Form1),#PB_Ignore)
           PVDynamic_AddLockWindow(#Window_Form1,2) -->
           WindowBounds(#Window_Form1,WindowWidth(#Window_Form1),WindowHeight(#Window_Form1),
           #PB_Ignore,WindowHeight(#Window_Form1))
           PVDynamic_AddLockWindow(#Window_Form1,3) -->
           WindowBounds(#Window_Form1,WindowWidth(#Window_Form1),WindowHeight(#Window_Form1),
           #PB_Ignore,#PB_Ignore)
2.1.1.2    PVDynamic_ColorGadget
           Use this function in a CallBack to Dynamically Color Gadgets.
Example:
          Procedure WindowCallback(WindowID,Message,wParam,lParam)
            ReturnValue=#PB_ProcessPureBasicEvents
            If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or
            Message=#WM_CTLCOLORLISTBOX
               ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
            EndIf
            ProcedureReturn ReturnValue
          EndProcedure
2.1.1.3   PVDynamic_AddWindow
          Adds a Form to the Dynamic Resize Library to be Dynamically Resized.
          Use:
          PVDynamic_AddWindow (#Window)
          Use:
          PVDynamic_AddGadget(#Window,#Gadget,4)
          MoveSize
           1 - Vertical Sizing
           2 - Horizontal Sizing
           4 - Vertical Movement
           8 - Horizontal Moving
          For Gadgets to Dynamically Resize on a Form, the Form must first be added using
          PVDynamic_AddWindow
2.1.1.5   PVDynamic_AddColorGadget
          Add a Gadget to be Dynamically Colored when it cannot be colored by normal means.
          Use:
          PVDynamic_AddColorGadget(#Gadget,$FF0000,$00FFFF)
          or
          PVDynamic_AddColorGadget(#Gadget,RGB(0,0,255),RGB(255,255,0))
             ·   TextGadget
             ·   StringGadget
             ·   OptionGadget
             ·   CheckBoxGadget
             ·   ListViewGadget
             ·   ComboBoxGadget
             ·   TrackBarGadget
2.1.1.6    PVDynamic_FreeColorGadget
           Free a Dynamic Color Gadget.
           Use:
           PVDynamic_FreeColorGadget (#Gadget)
2.1.1.7    PVDynamic_AddStatusBar
           Adds Dynamic AutoSizing to a Statusbar.
           Use:
           PVDynamic_AddStatusBar (#Window,#Statusbar,hStatusBar,2)
Example:
           hStatusbar=CreateStatusBar(#StatusBar_Main,WindowID(#Window_Main))
           PVDynamic_AddStatusBar(#Window_Main,#StatusBar_Main,hStatusBar,2)
              AddStatusBarField(100)
              AddStatusBarField(100)
2.1.2   PVGadgets
        PVGadgets are a collection of custom Gadgets and Functions that add to what is currently available in
        the PureBasic Compiler.
        PVGadgets_InitAnimGadget
        PVGadgets_AnimGadget
        PVGadgets_FreeAnimGadget
PVGadgets_BubbleTip
        PVGadgets_Canvas
        PVGadgets_CanvasFree
        PVGadgets_CanvasButtonAdd
        PVGadgets_CanvasButtonHover
        PVGadgets_CanvasButtonPressed
        PVGadgets_CanvasButtonDelete
        PVGadgets_CanvasEnableClick
        PVGadgets_CanvasDisableClick
        PVGadgets_ProgressBar
        PVGadgets_FreeProgressBar
        PVGadgets_Refresh
        PVGadgets_RefreshWindow
        PVGadgets_WindowFreeze
        PVGadgets_WindowUnfreeze
        PVGadgets_ToolWindow
        PVGadgets_WindowTransparent
        PVGadgets_WindowTop
        PVGadgets_WIndowReset
        PVGadgets_CurDir
        PVGadgets_TempDir
        PVGadgets_ExeDir
2.1.2.1    AnimGadget
2.1.2.1.1 PVGadgets_InitAnimGadget
           Use:
           hAnimGadget=PVGadgets_InitAnimadget()
This command must be called at the start of any program using PVGadgets_AnimGadget.
Example:
           hAnimGadget=PVGadgets_InitAnimGadget()
           #Window_Main=1
           If
           OpenWindow(#Window_Main,175,0,282,68,#PB_Window_SystemMenu|#PB_Window_Scre
           enCentered,"Demo")
                Gadget_Main_Anim=PVGadgets_AnimGadget(hAnimGadget,#Window_Main,0,0,280,
                65,160)
                Repeat
                Until WaitWindowEvent()=#PB_Event_CloseWindow
                PVGadgets_FreeAnimGadget(hAnimGadget)
EndIf
2.1.2.1.2 PVGadgets_AnimGadget
           Use:
           hGadget=PVGadgets_InitAnimadget(hAnimGadget)
           Flag
             150 - Search
             151 - Search Document
             152 - Search Computer
             160 - Copy Multi Files
             161 - Copy File
             162 - Delete Files
             163 - Empty Recycle Bin
             164 - Kill File
Example:
          hAnimGadget=PVGadgets_InitAnimGadget()
          #Window_Main=1
          If
          OpenWindow(#Window_Main,175,0,282,68,#PB_Window_SystemMenu|#PB_Window_Scre
          enCentered,"Demo")
               Gadget_Main_Anim=PVGadgets_AnimGadget(hAnimGadget,#Window_Main,0,0,280,
               65,160)
               Repeat
               Until WaitWindowEvent()=#PB_Event_CloseWindow
               PVGadgets_FreeAnimGadget(hAnimGadget)
EndIf
2.1.2.1.3 PVGadgets_AnimGadgetPlay
          Plays an AnimGadget animation sequence forever unless number of loops is specified. Start
          and end range can also be specified.
          Use:
          PVGadgets_AnimGadgetPlay(Gadget,4,6,12)
          Loop
          Number of times to loop animation sequence (default= forever)
          First
          Starting frame of animation sequence (default=first frame)
          Last
          Ending frame of animation sequence (default=last frame)
Example:
          hAnimGadget=PVGadgets_InitAnimGadget()
          #Window_Main=1
          If
          OpenWindow(#Window_Main,175,0,282,68,#PB_Window_SystemMenu|#PB_Window_Scre
          enCentered,"Demo")
               Gadget_Main_Anim=PVGadgets_AnimGadget(hAnimGadget,#Window_Main,0,0,280,
               65,160)
PVGadget_AnimGadgetPlay(Gadget_Main_Anim,10,6,12)
               Repeat
               Until WaitWindowEvent()=#PB_Event_CloseWindow
               PVGadgets_FreeAnimGadget(hAnimGadget)
EndIf
2.1.2.1.4 PVGadgets_AnimGadgetStop
           Use:
           PVGadgets_AnimGadgetStop(Gadget)
Example:
           hAnimGadget=PVGadgets_InitAnimGadget()
           #Window_Main=1
           If
           OpenWindow(#Window_Main,175,0,282,68,#PB_Window_SystemMenu|#PB_Window_Scre
           enCentered,"Demo")
                Gadget_Main_Anim=PVGadgets_AnimGadget(hAnimGadget,#Window_Main,0,0,280,
                65,160)
PVGadget_AnimGadgetStop(Gadget_Main_Anim)
                Repeat
                Until WaitWindowEvent()=#PB_Event_CloseWindow
                PVGadgets_FreeAnimGadget(hAnimGadget)
EndIf
2.1.2.1.5 PVGadgets_FreeAnimGadget
           Use:
           PVGadgets_InitAnimadget(hAnimGadget)
Use this command to free all resources when your application is closed.
Example:
           hAnimGadget=PVGadgets_InitAnimGadget()
           #Window_Main=1
           If
           OpenWindow(#Window_Main,175,0,282,68,#PB_Window_SystemMenu|#PB_Window_Scre
           enCentered,"Demo")
                Gadget_Main_Anim=PVGadgets_AnimGadget(hAnimGadget,#Window_Main,0,0,280,
                65,160)
                Repeat
                Until WaitWindowEvent()=#PB_Event_CloseWindow
                PVGadgets_FreeAnimGadget(hAnimGadget)
EndIf
2.1.2.1.6 PVGadgets_FreeAnimGadgetImages
          Free AnimImageGadget Images (AVI Files) by deleting them from the specified path. All AVI's
          found in the path will be deleted.
          Use:
          PVGadgets_FreeAnimGadgetImages("Temp")
2.1.2.2   BubbleTipGadget
2.1.2.2.1 PVGadgets_BubbleTip
          Use:
          PVGadgets_BubbleTip(Window,Gadget,"This is a BubbleTip",0,$DFFFFF)
          Flag
            0 - BubbleTip Style
            1 - Regular ToolTip Style
            -1 - Disable BubbleTip
          Using the Flag allows you to change the style of your bubble tip or disable it completely during the
          execution of your program.
          BColor
           $0 - $FFFFFF - Set Background color of BubbleTip
2.1.2.3   CanvasGadget
2.1.2.3.1 PVGadgets_Canvas
          Use:
          PVGadgets_Canvas(#Gadget,#Image,10,10,200,200,$EEEEEE)
Returns 0 if Failed
          BColor
           $0 - $FFFFFF (RGB Background Color Value)
Example:
#Window_Main=1
           #Gadget_Main_Canvas=2
           #Image_Main_Canvas=2
           If
           OpenWindow(#Window_Main,175,0,184,172,#PB_Window_SystemMenu|#PB_Window_ScreenCent
           ered,"Demo")
PVGadgets_Canvas(#Gadget_Main_Canvas,#Image_Main_Canvas,15,25,150,100,$EEEEEE)
                UseImage(#Image_Main_Canvas)
                StartDrawing(ImageOutput())
                  Circle(50,50,50,$FF0000)
                  Box(60,60,70,30,$0000FF)
                StopDrawing()
                PVGadgets_Refresh(#Gadget_Main_Canvas)
                Repeat
                Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
2.1.2.3.2 PVGadgets_CanvasFree
           Use:
           PVGadgets_CanvasFree (#Gadget,#Image)
           Creates a CanvasButton on specific Window by specifying the CanvasID, the Default Image and
           the Replacement Image.
           Use:
           PVGadgets_CanvasButtonAdd(#Window,#Gadget,#Image1,#Image2)
Example:
          XIncludeFile "Buttons_Constants.pb"
          XIncludeFile "Buttons_Windows.pb"
          ;-Main Loop
          If Window_Main()
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Settings,#Image_Main_Settings,#I
             mage_Icons_Settings)
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Web,#Image_Main_Web,#Image_I
             cons_Web)
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Info,#Image_Main_Info,#Image_Ico
             ns_Info)
             quitMain=0
             Repeat
               PVGadgets_CanvasButtonHover(#Window_Main)
               EventID=WindowEvent()
               If EventID
                  Select EventID
                    Case #PB_Event_CloseWindow
                      If EventWindowID()=#Window_Main
                         quitMain=1
                      EndIf
                   Case #WM_LBUTTONDOWN
                     Select PVGadgets_CanvasButtonPressed()
                       Case #Gadget_Main_Settings
                         SetGadgetText(#Gadget_Main_Press,"S e t t i n g s . . .")
                       Case #Gadget_Main_Web
                         SetGadgetText(#Gadget_Main_Press,"W e b s i t e . . .")
                       Case #Gadget_Main_Info
                         SetGadgetText(#Gadget_Main_Press,"I n f o r m a t i o n . . .")
                     EndSelect
                 EndSelect
                 Else
                 Delay(1)
              EndIf
            Until quitMain
            CloseWindow(#Window_Main)
          EndIf
2.1.2.3.4 PVGadgets_CanvasButtonHover
          Checks if Mouse Pointer is over CanvasButton on specified Window and replaces with Sub
          Image.
          Use:
          Result=PVGadgets_CanvasButtonHover()
Example:
           XIncludeFile "Buttons_Constants.pb"
           XIncludeFile "Buttons_Windows.pb"
           ;-Main Loop
           If Window_Main()
              PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Settings,#Image_Main_Settings,#I
              mage_Icons_Settings)
              PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Web,#Image_Main_Web,#Image_I
              cons_Web)
              PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Info,#Image_Main_Info,#Image_Ico
              ns_Info)
             quitMain=0
             Repeat
               PVGadgets_CanvasButtonHover(#Window_Main)
               EventID=WindowEvent()
               If EventID
                  Select EventID
                    Case #PB_Event_CloseWindow
                      If EventWindowID()=#Window_Main
                         quitMain=1
                      EndIf
                     Case #WM_LBUTTONDOWN
                       Select PVGadgets_CanvasButtonPressed()
                         Case #Gadget_Main_Settings
                           SetGadgetText(#Gadget_Main_Press,"S e t t i n g s . . .")
                         Case #Gadget_Main_Web
                           SetGadgetText(#Gadget_Main_Press,"W e b s i t e . . .")
                         Case #Gadget_Main_Info
                           SetGadgetText(#Gadget_Main_Press,"I n f o r m a t i o n . . .")
                       EndSelect
                   EndSelect
                  Else
                  Delay(1)
               EndIf
             Until quitMain
             CloseWindow(#Window_Main)
           EndIf
2.1.2.3.5 PVGadgets_CanvasButtonPressed
           Use:
           Result=PVGadgets_CanvasButtonPressed(#Window_Main)
Example:
          XIncludeFile "Buttons_Constants.pb"
          XIncludeFile "Buttons_Windows.pb"
          ;-Main Loop
          If Window_Main()
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Settings,#Image_Main_Settings,#I
             mage_Icons_Settings)
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Web,#Image_Main_Web,#Image_I
             cons_Web)
             PVGadgets_CanvasButtonAdd(#Window_Main,#Gadget_Main_Info,#Image_Main_Info,#Image_Ico
             ns_Info)
             quitMain=0
             Repeat
               PVGadgets_CanvasButtonHover(#Window_Main)
               EventID=WindowEvent()
               If EventID
                  Select EventID
                    Case #PB_Event_CloseWindow
                      If EventWindowID()=#Window_Main
                         quitMain=1
                      EndIf
                    Case #WM_LBUTTONDOWN
                      Select PVGadgets_CanvasButtonPressed()
                        Case #Gadget_Main_Settings
                          SetGadgetText(#Gadget_Main_Press,"S e t t i n g s . . .")
                        Case #Gadget_Main_Web
                          SetGadgetText(#Gadget_Main_Press,"W e b s i t e . . .")
                        Case #Gadget_Main_Info
                          SetGadgetText(#Gadget_Main_Press,"I n f o r m a t i o n . . .")
                      EndSelect
                  EndSelect
                 Else
                 Delay(1)
              EndIf
            Until quitMain
            CloseWindow(#Window_Main)
          EndIf
2.1.2.3.6 PVGadgets_CanvasButtonDelete
          Use:
          Result=PVGadgets_CanvasButtonDelete(#Gadget)
Returns 0 if Failed
2.1.2.3.7 PVGadgets_CanvasEnableClick
Enables a mouse click event to be returned from an Image. (PureBaisc's default behavior)
           Use:
           Result=PVGadgets_CanvasEnableClick(#Gadget)
2.1.2.3.8 PVGadgets_CanvasDisableClick
           Use:
           Result=PVGadgets_CanvasDisableClick(#Gadget)
2.1.2.4    ProgressBarGadget
2.1.2.4.1 PVGadgets_ProgressBar
           Use:
           PVGadgets_ProgressBar(#Gadget,#Image,10,10,100,20,0,1,$000000,$0000FF,$00FFFF,#PB_Image
           _Border)
           Progress
             0 - 100 (representing %)
           Shadow
             0 - no shadow on number
             1 - shadow on number
             -1 - no number
           BColor
            $0 - $FFFFFF (RGB values of background color)
            -1 - Use Background Color of Form
           FColor1
             $0 - $FFFFFF (RGB values of foreground color)
           FColor2
             $0 - $FFFFFF (RGB values of foreground color)
           Flag (optional)
             0 - no border
             1 - flat border
             #PB_Image_Border - sunken border
           · Once this Gadget has been created, you can set x,y,w,h to 0 as they are not needed.
           · Setting FColor1 different from FColor2 will cause the color of the bar to fade from one color to the
             next.
Example:
          #Gadget=1
          #Image=1
If OpenWindow(0,0,0,200,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo")
               PVGadgets_ProgressBar(#Gadget,#Image,10,40,170,20,0,1,$000000,$0000FF,$00FFFF,#PB_I
               mage_Border)
2.1.2.4.2 PVGadgets_FreeProgressBar
          Use:
          PVGadgets_FreeProgressBar (#Gadget,#Image)
2.1.2.5   PieChartGadget
2.1.2.5.1 PVGadgets_PieChart
          Use:
          PVGadgets_PieChart(#Gadget,#Image,10,10,100,20,-1,$0000FF,$00FFFF,35)
          Progress
            0 - 100 (representing %)
          BackColor
           $0 - $FFFFFF (RGB values of background color)
           -1 - Set Background Color of Form to System Form color
          PieBack
            $0 - $FFFFFF (RGB values of background pie color)
          PieFront
            $0 - $FFFFFF (RGB values of foreground pie color)
          FontID (optional)
            ID of loaded font to use
            0 - Use Default System Font
          FontColor (optional)
            $0 - $FFFFFF (RGB values of font color)
            Default is Black
Example:
           #ChartGad=1
           #ChartImg=1
           If OpenWindow(0,0,0,220,220,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Pie
           Chart")
myfont=LoadFont(1,"Arial",20,#PB_Font_Bold)
                Repeat
                  bar+1
                  If bar>100:bar=0:EndIf
                  PVGadgets_PieChart(#ChartGad,#ChartImg,10,10,200,200,-
                  1,RGB(160,160,160),RGB(255,255,0),bar,myfont,RGB(0,0,150))
                  Delay(10)
                Until WindowEvent()=#PB_Event_CloseWindow
                PVGadgets_FreePieChart(#ChartGad,#ChartImg)
EndIf
2.1.2.5.2 PVGadgets_FreePieChart
           Use:
           PVGadgets_FreePieChart (#Gadget,#Image)
           Use:
           PVGadgets_Refresh(#Gadget)
Example:
           #Window_Main=0
           #Gadget_Main_Ok=1
           #Gadget_Main_Canvas=2
           #Image_Main_Canvas=2
           If
           OpenWindow(#Window_Main,175,0,184,172,#PB_Window_SystemMenu|#PB_Window_ScreenCent
           ered,"Demo")
                PVGadgets_Canvas(#Gadget_Main_Canvas,#Image_Main_Canvas,15,25,150,100,12632256)
                ButtonGadget(#Gadget_Main_Ok,105,140,60,20,"Press Me")
                UseImage(#Image_Main_Canvas)
                StartDrawing(ImageOutput())
                  DrawingMode(4)
                  Box(10,10,130,80,$00FFFF)
                  Box(20,20,110,60,$00FFFF)
                StopDrawing()
                PVGadgets_Refresh(#Gadget_Main_Canvas) ;<-- After drawing to the Canvas, Refresh it so we
                can see results
                Repeat
                  EventID=WaitWindowEvent()
                  If EventID=#PB_Event_Gadget
                     If EventGadgetID()=#Gadget_Main_Ok
                        UseImage(#Image_Main_Canvas)
                        StartDrawing(ImageOutput())
                          Circle(50,50,50,$FF0000)
                          Box(60,60,70,30,$0000FF)
                        StopDrawing()
                        PVGadgets_Refresh(#Gadget_Main_Canvas) ;<-- After drawing to the Canvas, Refresh it
                        so we can see results
                     EndIf
                  EndIf
                Until EventID=#PB_Event_CloseWindow
EndIf
2.1.2.6.2 PVGadgets_RefreshWindow
           Use:
           PVGadgets_RefreshWindow(#Window)
2.1.2.7    Misc Functions
2.1.2.7.1 Window Functions
2.1.2.7.1.1 PVGadgets_WindowFreeze
           Freezes all Windows except the specified Window. Total number of Windows in the project
           must also be specified (this can be found in the Constant #WindowIndex)
           Use:
           PVGadgets_WindowFreeze(#Window_Main,#WindowIndex)
2.1.2.7.1.2 PVGadgets_WindowUnfreeze
           Unfreezes all Windows and activates the specified Window. Total number of Windows in the
           project must also be specified (this can be found in the Constant #WindowIndex)
           Use:
           PVGadgets_WindowUnfreeze(#Window_Main,#WindowIndex)
2.1.2.7.1.3 PVGadgets_ToolWindow
           Use:
           PVGadgets_ToolWindow(#Window_Main)
2.1.2.7.1.4 PVGadgets_WindowTransparent
           Use:
           PVGadgets_WindowTransparent(#Window_Main,100)
           Transparency
             0 - 255 (0=invisible / 255=full visible)
2.1.2.7.1.5 PVGadgets_WindowTop
           Use:
           PVGadgets_WindowTop(#Window_Main)
2.1.2.7.1.6 PVGadgets_WindowReset
           Use:
           PVGadgets_WindowReset(#Window_Main)
2.1.2.7.2 Path Functions
2.1.2.7.2.1 PVGadgets_CurDir
           Use:
           CurDir$=PVGadgets_CurDir()
           Note:
           Returned path always contains trailing backslash.
2.1.2.7.2.2 PVGadgets_TempDir
           Use:
           TempDir$=PVGadgets_TempDir()
           Note:
           Returned path always contains trailing backslash.
2.1.2.7.2.3 PVGadgets_ExeDir
           Use:
           ExeDir$=PVGadgets_ExeDir()
           Note:
           Returned path always contains trailing backslash.
2.1.2.7.3.1 PVGadgets_CountListIconColumns
           Use:
           Result=PVGadgets_CountListIconColumns(#Gadget)
Example:
            #Main=0
            #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                 ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                 AddGadgetColumn(#List,1,"Column 2",80)
                 AddGadgetColumn(#List,2,"Column 3",50)
              totalcolumns=PVGadgets_CountListIconColumns(#List)
              MessageRequester("Result","Total Columns: "+Str(totalcolumns))
              oldcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
              PVGadgets_SetListIconColumnWidth(#List,2,100)
              newcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
              MessageRequester("Result","Old Width: "+Str(oldcolumnwidth)+Chr(10)+"New Width: "+Str(newcolumnwidth))
              Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
            EndIf
2.1.2.7.3.2 PVGadgets_GetListIconColumnWidth
           Use:
           Result=PVGadgets_GetListIconColumnWidth(#Gadget,Column)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",80)
                AddGadgetColumn(#List,2,"Column 3",50)
             totalcolumns=PVGadgets_CountListIconColumns(#List)
             MessageRequester("Result","Total Columns: "+Str(totalcolumns))
             oldcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
             PVGadgets_SetListIconColumnWidth(#List,2,100)
             newcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
             MessageRequester("Result","Old Width: "+Str(oldcolumnwidth)+Chr(10)+"New Width: "+Str(newcolumnwidth))
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.3 PVGadgets_SetListIconColumnWidth
           Use:
           Result=PVGadgets_SetListIconColumnWidth(#Gadget,Column,Width)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",80)
                AddGadgetColumn(#List,2,"Column 3",50)
             totalcolumns=PVGadgets_CountListIconColumns(#List)
             MessageRequester("Result","Total Columns: "+Str(totalcolumns))
             oldcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
             PVGadgets_SetListIconColumnWidth(#List,2,100)
             newcolumnwidth=PVGadgets_GetListIconColumnWidth(#List,2)
             MessageRequester("Result","Old Width: "+Str(oldcolumnwidth)+Chr(10)+"New Width: "+Str(newcolumnwidth))
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.4 PVGadgets_JustifyListIconColumn
           Use:
           PVGadgets_JustifyListIconColumn(#Gadget,Column,Flag)
           Flag:
             0 - Left (Default)
             1 - Right
2 - Center
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",100)
                AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"TestA_"+Str(tmp)+Chr(10)+"TestB_"+Str(tmp)+Chr(10)+"TestC_"+Str(tmp))
             Next
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.5 PVGadgets_LastListIconRow
          Use:
          PVGadgets_LastListIconRow(#Gadget)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",100)
                AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"TestA_"+Str(tmp)+Chr(10)+"TestB_"+Str(tmp)+Chr(10)+"TestC_"+Str(tmp))
             Next
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.6 PVGadgets_SelectListIconRow
          Use:
          PVGadgets_SelectListIconRow(#Gadget,Row)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",100)
                AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"TestA_"+Str(tmp)+Chr(10)+"TestB_"+Str(tmp)+Chr(10)+"TestC_"+Str(tmp))
             Next
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.7 PVGadgets_CreateListIconImageList
           Use:
           hImageList=PVGadgets_CreateListIconImageList(#Gadget)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                AddGadgetColumn(#List,1,"Column 2",100)
                AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"A_"+Str(tmp)+Chr(10)+"B_"+Str(tmp)+Chr(10)+"C_"+Str(tmp))
             Next
             hImageList=PVGadgets_CreateListIconImageList(#List)
             HelpIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(0,"help.ico"))
             InfoIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(1,"info.ico"))
             PVGadgets_ChangeListIconImage(#List,3,1,HelpIcon)
             PVGadgets_ChangeListIconImage(#List,5,2,InfoIcon)
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.8 PVGadgets_AddListIconImageList
           Use:
           ImageID=PVGadgets_AddListIconImageList(hImageList,hImage)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                  ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                  AddGadgetColumn(#List,1,"Column 2",100)
                  AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"A_"+Str(tmp)+Chr(10)+"B_"+Str(tmp)+Chr(10)+"C_"+Str(tmp))
             Next
             hImageList=PVGadgets_CreateListIconImageList(#List)
             HelpIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(0,"help.ico"))
             InfoIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(1,"info.ico"))
             PVGadgets_ChangeListIconImage(#List,3,1,HelpIcon)
             PVGadgets_ChangeListIconImage(#List,5,2,InfoIcon)
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.9 PVGadgets_FreeListIconImageList
           Use:
           PVGadgets_FreeListIconImageList(hImageList)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                  ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                  AddGadgetColumn(#List,1,"Column 2",100)
                  AddGadgetColumn(#List,2,"Column 3",100)
             For tmp=0 To 20
               AddGadgetItem(#List,-1,"A_"+Str(tmp)+Chr(10)+"B_"+Str(tmp)+Chr(10)+"C_"+Str(tmp))
             Next
             hImageList=PVGadgets_CreateListIconImageList(#List)
             HelpIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(0,"help.ico"))
             InfoIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(1,"info.ico"))
             PVGadgets_ChangeListIconImage(#List,3,1,HelpIcon)
             PVGadgets_ChangeListIconImage(#List,5,2,InfoIcon)
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
             PVGadgets_FreeListIconImageList(hImageList)
           EndIf
2.1.2.7.3.10 PVGadgets_ChangeListIconImage
Use:
PVGadgets_ChangeListIconImage(#List,5,2,InfoIcon)
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                  ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                  AddGadgetColumn(#List,1,"Column 2",100)
                  AddGadgetColumn(#List,2,"Column 3",100)
              For tmp=0 To 20
                AddGadgetItem(#List,-1,"A_"+Str(tmp)+Chr(10)+"B_"+Str(tmp)+Chr(10)+"C_"+Str(tmp))
              Next
              hImageList=PVGadgets_CreateListIconImageList(#List)
              HelpIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(0,"help.ico"))
              InfoIcon=PVGadgets_AddListIconImageList(hImageList,LoadImage(1,"info.ico"))
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.3.11 PVGadgets_ListIconTitle
Change the Title Text of specified Column (column index starts at 0).
           Use:
           PVGadgets_ListIconTitle(#Gadget,Column,"New Title")
Example:
           #Main=0
           #List=1
If OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
                  ListIconGadget(#List,0,0,400,300,"Column 1",150,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
                  AddGadgetColumn(#List,1,"Column 2",100)
                  AddGadgetColumn(#List,2,"Column 3",100)
              For tmp=0 To 20
                AddGadgetItem(#List,-1,"TestA_"+Str(tmp)+Chr(10)+"TestB_"+Str(tmp)+Chr(10)+"TestC_"+Str(tmp))
              Next
             Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
           EndIf
2.1.2.7.4.1 PVGadgets_FormatNumber
Use:
Result$=PVGadgets_FormatNumber(Number.s,Group.l,DecDig.l,DecSep.s,GrpSep.s,Neg.l)
Example:
Debug PVGadgets_FormatNumber("3343200",3,2,".",",",0)
            returns:
            3,343,200.00
2.1.2.7.5.1 PVGadgets_StartOnce
Result=PVGadgets_StartOnce("MyApp")
2.1.2.7.6.1 PVGadgets_APIError
Result$=PVGadgets_APIError()
2.1.3      PureSkin
           PureSkin functions allow you to easily apply skins to your Windows forms.
            PureSkin
            PureSkinMem
            PureSkinHide
Skins are created from standard BMP files using the PureSkin Maker in PureVision.
2.1.3.1    PureSkin
           Skin the Selected Window from File.
           Use:
           PureSkin(#Window,#Gadget,#Image,"MySkin.pvs",1)
Returns 1 if success.
Example:
           #Main=0
           #Gadget_Skin=1
           #Image_Skin=2
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCenter
           ed,"Demo")
             quitMain=0
             Repeat
               Select WaitWindowEvent()
                 Case #PB_Event_CloseWindow
                   quitMain=1
               EndSelect
             Until quitMain
           EndIf
           End
2.1.3.2    PureSkinMem
           Skin the Selected Window from Memory.
           Use:
           PureSkinMem(#Window,#Gadget,#Image,?_MySkin,1)
Returns 1 if success.
Example:
          #Main=0
          #Gadget_Skin=1
          #Image_Skin=2
          If
          OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCenter
          ed,"Demo")
            quitMain=0
            Repeat
              Select WaitWindowEvent()
                Case #PB_Event_CloseWindow
                  quitMain=1
              EndSelect
            Until quitMain
          EndIf
          End
          DataSection
            _MySkin:IncludeBinary "MySkin.pvs"
          EndDataSection
2.1.3.3   PureSkinHide
          Hides or Displays a PureSkin.
          Use:
          PureSkinHide(#Window,0)
Example:
           #Main=0
           #Skin=1
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCenter
           ed,"Demo")
             quitMain=0
             Repeat
               Select WaitWindowEvent()
                 Case #PB_Event_CloseWindow
                   quitMain=1
               EndSelect
             Until quitMain
           EndIf
           End
2.1.4      PurePoint
           PurePoint functions allow you to create your own mouse pointers and use them in your applications.
           PurePoint
           PurePointMem
           UsePurePoint
           SysPurePoint
           FreePurePoint
           ResetPurePoint
           PurePointChild
           PurePointX
           PurePointY
           PurePointXX
           PurePointYY
2.1.4.1   PurePoint
          Loads a PurePoint from File.
          Use:
          hPoint=PurePoint("Cross.pvp")
Example:
          #Main=0
          If
          OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
          )
             hPoint=PurePoint("Cross.pvp") ;<-- Loads PurePoint from File
            quitMain=0
            Repeat
              UsePurePoint(hPoint)
             Select WaitWindowEvent()
                 Case #PB_Event_CloseWindow
                   quitMain=1
             EndSelect
            Until quitMain
            FreePurePoint(hPoint)
          EndIf
          End
2.1.4.2   PurePointMem
          Loads a PurePoint from Memory.
          Use:
          hPoint=PurePointMem(MemoryAddress)
Example:
           #Main=0
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
              hPoint=PurePointMem(?_Cross) ;<-- Loads PurePoint from Memory (Included Binary)
             quitMain=0
             Repeat
               UsePurePoint(hPoint)
              Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
              EndSelect
             Until quitMain
             FreePurePoint(hPoint)
           EndIf
           End
           DataSection
             _Cross:IncludeBinary "Cross.pvp"
           EndDataSection
2.1.4.3    UsePurePoint
           Uses/Displays a PurePoint that has previously been loaded.
           Use:
           UsePurePoint(hPoint)
Example:
           #Main=0
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
              hPoint=PurePoint("Cross.pvp")
             quitMain=0
             Repeat
               UsePurePoint(hPoint) ;<-- Use and Display PurePoint
              Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
              EndSelect
             Until quitMain
             FreePurePoint(hPoint)
           EndIf
           End
2.1.4.4   SysPurePoint
          Sets System Cursor to specified PurePoint.
          Use:
          SysPurePoint(hPoint)
Returns 0 if Fail.
Example:
#Main=0
          If
          OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
          )
             hPoint=PurePoint("Cross.pvp")
             SysPurePoint(hPoint)      ;<-- Sets System Cursor to PurePoint
            quitMain=0
            Repeat
              Select WaitWindowEvent()
                 Case #PB_Event_CloseWindow
                   quitMain=1
              EndSelect
            Until quitMain
            FreePurePoint(hPoint)
            ResetPurePoint()
          EndIf
          End
2.1.4.5   FreePurePoint
          Free PurePoint Resources of specified Handle.
          Use:
          FreePurePoint(hPoint)
Returns 0 if success.
Example:
#Main=0
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
              hPoint=PurePoint("Cross.pvp")
             quitMain=0
             Repeat
               UsePurePoint(hPoint)
              Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
              EndSelect
             Until quitMain
2.1.4.6    ResetPurePoint
           Resets a System Cursor to the Default Arrow.
           Use:
           ResetPurePoint()
Example:
#Main=0
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
              hPoint=PurePoint("Cross.pvp")
              SysPurePoint(hPoint)
             quitMain=0
             Repeat
               Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
               EndSelect
             Until quitMain
             FreePurePoint(hPoint)
             ResetPurePoint()    ;<-- Resets System Cursor
           EndIf
           End
2.1.4.7   PurePointChild
          Used to Identify what Gadget a PurePoint is Over.
          Use:
          hGadget=PurePointChild(Window)
Example:
          #Main=0
          #List=1
          If
          OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
          )
ListIconGadget(#List,10,10,300,200,"Demo",100)
hPoint=PurePoint("Cross.pvp")
            quitMain=0
            Repeat
              If PurePointChild(#Main)=GadgetID(#List) ;<-- Checks is PurePoint is over ListIcon
                 UsePurePoint(hPoint)                 ;<-- Displays PurePoint only over ListIcon
              EndIf
             Select WaitWindowEvent()
                 Case #PB_Event_CloseWindow
                   quitMain=1
             EndSelect
            Until quitMain
            FreePurePoint(hPoint)
          EndIf
          End
2.1.4.8   PurePointX
          Returns Horizontal Position of PurePoint in specified Window.
          Use:
          X=PurePointX(Window)
Example:
           #Main=0
           #Text=1
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
TextGadget(#Text,10,10,200,20,"")
hPoint=PurePoint("PP.pvp")
             quitMain=0
             Repeat
               UsePurePoint(hPoint)
              Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
              EndSelect
             Until quitMain
             FreePurePoint(hPoint)
           EndIf
           End
2.1.4.9    PurePointY
           Returns Vertical Position of PurePoint in specified Window.
           Use:
           Y=PurePointY(Window)
Example:
        #Main=0
        #Text=1
        If
        OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
        )
TextGadget(#Text,10,10,200,20,"")
hPoint=PurePoint("PP.pvp")
          quitMain=0
          Repeat
            UsePurePoint(hPoint)
            x=PurePointX(#Main)
            y=PurePointY(#Main) ;<-- Return Vertical Position of PurePoint
            SetGadgetText(#Text,"X="+Str(x)+" Y="+Str(y))
           Select WaitWindowEvent()
               Case #PB_Event_CloseWindow
                 quitMain=1
           EndSelect
          Until quitMain
          FreePurePoint(hPoint)
        EndIf
        End
2.1.4.10 PurePointXX
        Returns Horizontal Position of PurePoint in specified Gadget.
        Use:
        X=PurePointXX(Gadget)
Example:
           #Main=0
           #Text=1
           #Button=3
           If
           OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
           )
                TextGadget(#Text,10,10,200,20,"")
                ButtonGadget(#Button,10,50,80,20,"Demo")
hPoint=PurePoint("PP.pvp")
             quitMain=0
             Repeat
               UsePurePoint(hPoint)
                If x<0 Or y<0
                   SetGadgetText(#Text,"Null")
                   Else
                   SetGadgetText(#Text,"X="+Str(x)+" Y="+Str(y))
                EndIf
              Select WaitWindowEvent()
                  Case #PB_Event_CloseWindow
                    quitMain=1
              EndSelect
             Until quitMain
             FreePurePoint(hPoint)
           EndIf
           End
2.1.4.11 PurePointYY
           Returns Vertical Position of PurePoint in specified Gadget.
           Use:
           Y=PurePointYY(Gadget)
Example:
       #Main=0
       #Text=1
       #Button=3
       If
       OpenWindow(#Main,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo"
       )
           TextGadget(#Text,10,10,200,20,"")
           ButtonGadget(#Button,10,50,80,20,"Demo")
hPoint=PurePoint("PP.pvp")
         quitMain=0
         Repeat
           UsePurePoint(hPoint)
           x=PurePointXX(#Button)
           y=PurePointYY(#Button)      ;<-- Return Vertical Position of PurePoint on Button
           If x<0 Or y<0
              SetGadgetText(#Text,"Null")
              Else
              SetGadgetText(#Text,"X="+Str(x)+" Y="+Str(y))
           EndIf
           Select WaitWindowEvent()
             Case #PB_Event_CloseWindow
                quitMain=1
             EndSelect
           Until quitMain
         FreePurePoint(hPoint)
       EndIf
       End
       If the Gadget or Form you have created needs any of the following, simply copy and paste it into your
       project.
           Procedure WindowCallback(WindowID,Message,wParam,lParam)
             ReturnValue=#PB_ProcessPureBasicEvents
             If Message=#WM_GETMINMAXINFO
                ReturnValue=PVDynamic_LockWindow(WindowID,lParam)
             EndIf
             If Message=#WM_SIZE
                ReturnValue=PVDynamic_Resize(WindowID)
             EndIf
             If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or
             Message=#WM_CTLCOLORLISTBOX
                ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
             EndIf
             ProcedureReturn ReturnValue
           EndProcedure
       III
                                                                           PVPlugins User Library   86
           Name
           Name of your Plugin
           HiVersion
           High version number
           LoVersion
           Low version number
           Info
           Short description of your plugin
           Copyright
           Copyright information for plugin
Returns 0 if failure.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.2    PV_PluginsWindowName
       Sets the ID Name for the Plugin Window.
This function MUST be called before calling any of the other PluginWindow functions.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.3    PV_PluginsWindowTitle
       Sets the Window Title text for the Plugin Window.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.4        PV_PluginsWindowX
           Sets the X position of the Plugin Window.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.5    PV_PluginsWindowY
       Sets the Y position of the Plugin Window.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.6    PV_PluginsWindowW
       Sets the width of the Plugin Window.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.7        PV_PluginsWindowH
           Sets the height of the Plugin Window.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.8    PV_PluginsWindowBGColor
       Sets the background color of the Plugin Window.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.9    PV_PluginsWindowTab
       Sets the number of Statusbar Tabs for the Plugin Window.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.10       PV_PluginsGadgetType
           Creates and adds the specified Gadget Type to the Plugin Window.
This function MUST be called before calling any of the other PluginGadget functions.
           Type
           TextGadget
           ButtonGadget
           StringGadget
           ...
           any valid Gadget available in PureVision (excluding Container type Gadgets)
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.11   PV_PluginsGadgetName
       Sets the ID Name of the Plugin Gadget.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.12       PV_PluginsGadgetText
           Sets the Gadget Text of the Plugin Gadget.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.13       PV_PluginsGadgetX
           Sets the X position of the Plugin Gadget.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.14   PV_PluginsGadgetY
       Sets the Y position of the Plugin Gadget.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.15       PV_PluginsGadgetW
           Sets the width of the Plugin Gadget.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.16       PV_PluginsGadgetH
           Sets the height of the Plugin Gadget.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
         PV_PluginsWindowBGColor(RGB(0,0,150))
        PV_PluginsGadgetType("ButtonGadget")
        PV_PluginsGadgetName("TestButton")
        PV_PluginsGadgetText("Click Here")
        PV_PluginsGadgetX(10)
        PV_PluginsGadgetY(10)
        PV_PluginsGadgetW(80)
        PV_PluginsGadgetH(20)
       EndIf
PV_Plugins()
3.17   PV_PluginsGadgetTabs
       Sets the number of tabs for the Plugin Gadget.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
3.18       PV_PluginsMenuItemName
           Sets the ID Name of the MenuItem.
Example:
       If Result
         PV_PluginsWindowName("TestForm")
         PV_PluginsWindowTitle("Created with Plugin")
         PV_PluginsWindowX(80)
         PV_PluginsWindowY(80)
         PV_PluginsWindowW(300)
         PV_PluginsWindowH(200)
        PV_PluginsMenuItemName("File")
        PV_PluginsMenuItemText("File")
        PV_PluginsMenuItemPos(0)
        PV_PluginsMenuItemName("New")
        PV_PluginsMenuItemText("New")
        PV_PluginsMenuItemPos(1)
        PV_PluginsMenuItemName("<BREAK>")
        PV_PluginsMenuItemPos(1)
        PV_PluginsMenuItemName("Exit")
        PV_PluginsMenuItemText("Exit")
        PV_PluginsMenuItemPos(1)
       EndIf
PV_Plugins()
3.19   PV_PluginsMenuItemText
       Sets the Displayed Text of the MenuItem.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
            PV_PluginsMenuItemName("File")
            PV_PluginsMenuItemText("File")
            PV_PluginsMenuItemPos(0)
            PV_PluginsMenuItemName("New")
            PV_PluginsMenuItemText("New")
            PV_PluginsMenuItemPos(1)
            PV_PluginsMenuItemName("<BREAK>")
            PV_PluginsMenuItemPos(1)
            PV_PluginsMenuItemName("Exit")
            PV_PluginsMenuItemText("Exit")
            PV_PluginsMenuItemPos(1)
           EndIf
PV_Plugins()
3.20       PV_PluginsMenuItemPos
           Sets the Position of the MenuItem.
           Position:
           0 = Main Section
           1 = Sub Section
Example:
        If Result
          PV_PluginsWindowName("TestForm")
          PV_PluginsWindowTitle("Created with Plugin")
          PV_PluginsWindowX(80)
          PV_PluginsWindowY(80)
          PV_PluginsWindowW(300)
          PV_PluginsWindowH(200)
         PV_PluginsMenuItemName("File")
         PV_PluginsMenuItemText("File")
         PV_PluginsMenuItemPos(0)
         PV_PluginsMenuItemName("New")
         PV_PluginsMenuItemText("New")
         PV_PluginsMenuItemPos(1)
         PV_PluginsMenuItemName("<BREAK>")
         PV_PluginsMenuItemPos(1)
         PV_PluginsMenuItemName("Exit")
         PV_PluginsMenuItemText("Exit")
         PV_PluginsMenuItemPos(1)
        EndIf
PV_Plugins()
3.21    PV_Plugins
        This function is called at the end of your Plugin, enabling communication between the Plugin
        and PureVision.
Example:
           If Result
             PV_PluginsWindowName("TestForm")
             PV_PluginsWindowTitle("Created with Plugin")
             PV_PluginsWindowX(80)
             PV_PluginsWindowY(80)
             PV_PluginsWindowW(300)
             PV_PluginsWindowH(200)
             PV_PluginsWindowBGColor(RGB(0,0,150))
            PV_PluginsGadgetType("ButtonGadget")
            PV_PluginsGadgetName("TestButton")
            PV_PluginsGadgetText("Click Here")
            PV_PluginsGadgetX(10)
            PV_PluginsGadgetY(10)
            PV_PluginsGadgetW(80)
            PV_PluginsGadgetH(20)
           EndIf
PV_Plugins()
       IV
                                                                            PureBasic Integration     104
4          PureBasic Integration
           To integrate PureVision into the PureBasic 5.0+ IDE MenuBar, select Tools from the Main MenuBar.
      Locate the folder containing PureVision and select the main PureVision executable.
      Enter the name of the Form Designer under Name and select a Shortcut key if you wish to use a
      shortcut to launch PureVision.
      Under Item Settings, select Icon File and choose the icon you wish to represent PureVision in the Main
      MenuBar.
      Select Run Tool and then select PureVision.
      Press Add when you are complete.
           The Main MenuBar will now contain a new Icon which will launch PureVision when clicked or when you
           press the appropriate Shortcut Key.
       V
    111      PureVision
          If PureVision was purchased bundled with the SpiderBasic Export Module, exporting to SpiderBasic will
          be activated when your Registration Key has been entered.
          If you are already a Registered User of PureVision, you can purchase the SpiderBasic Export Module
          separately for only $9.95 by selecting Help from the Main MenuBar and selecting Buy SpiderBasic
          Export Module.
          If the SpiderBasic Export Module has been purchased separately, you will need to enter your new
          Registration Key by selecting Help from the MenuBar and selecting Enter Registration Key.
          When exporting your project, you will have the option to Export SpiderBasic Code.
          If this option is checked your code will be exported and saved in the SpiderBasic .sb format.
           When working in PureVision make sure you set up the Compiler Settings by opening the Compiler
           Settings Window.
           Enter the location of where SpiderBasic has been installed on your Hard Drive.
           If the correct folder has been entered, the current version of SpiderBasic will be displayed.
      To preview exported code and see how it will compile in SpiderBasic, make sure Export SpiderBasic
      Source is checked.
      If this is not checked, source code will be exported and previewed in PureBasic.
      When designing Forms for use with SpiderBasic, it is best tell PureVision that your Development
      Platform is SpiderBasic.
      This is done by selecting Forms from the PureVision MenuBar, selecting Development Platform and
      choosing Spider Basic.
           This will remove all Gadgets from the Gadget Creator ToolBar that are not compatible with
           SpiderBasic.
       VI
                                                                                             History     116
6          History
           Version 5.63e
           · Fixed incorrect Constant for MenuBar ToolTip when exporting with #PB_Any
           · Fixed Edit Columns windows getting stuck behind another window when "Tool Windows on Top" is
             set
           Version 5.63d
           · Fixed ToolBar export to make it compatible with PB5.46 LTS
           · Added extra checks when Opening/Importing a file to prevent wrong Form Name displaying in Form
             List Selection Box
           Version 5.63c
           · Added a little more information under Code Inject in the manual
           Version 5.63b
           · Added checks when switching between different Development Platforms for better code export and
             preventing crashes
           Version 5.63
           · Added ToolBar Editor
           · Fixed Right Clicks being lost in Main Interface
           · Fixed proper "/" and "\" being exported when target compiler is Linux
           Version 5.62c
           · Added GIF support for ImageGadget, ButtonImageGadget and Window Background
           · Fixed Interface not restoring properly if quitting PureVision while minimized
           · Fixed incorrect filename appearing in "File name" field when Exporting Project
           Version 5.62b
           · Fixed Gadgets marked as Hidden not exporting properly
           · Fixed SpiderBasic Export not adding ParentID when a Child Form was assigned to a Parent Form
           · Added SpiderBasic specific Gadget Flags for OpenWindow, TextGadget, StringGadget
           · Updated PureBasic Gadget Flags
           Version 5.62
           · Recompiled with PureBasic 5.62
           · Added DPI scaling to PureVision Interface to prevent text and gadgets from being cut off when
             Windows DPI is scaled above 100%
           · Added #PB_Ignore option to StatusBar by setting Field size to zero
           · Fixed many spelling mistakes in Help File/Manual (thanks to FangBeast)
           Version 5.61
           · Recompiled with PureBasic 5.61
           · Updated Help File to better explain the PVDynamic changes in the PVGadgets Library
      Version 5.60e
      · Fixed Gadgets highlighting incorrectly in PanelGadget is large font is used in the Tabs
      · Fixed Gadget Selection in ScrollAreaGadget so you can use mouse to Move/Size Gadgets
      · Changed the way Dynamic Resizing works. BindEvent using SizeWindow now replaces 2 Windows
        Callbacks
      · Windows Callback is only required if a Gadget Color not supported by PureBasic's native
        Forground/Background Color commands is used
      · Due to these changes, install new PVGadgets Library, re-export PureVision Projects and verify your
        Main Event Loop contains proper Dynamic Sizing code.
      Version 5.60d
      · Added CTRL-A to Export Project Form allowing quick Select/Deselect of Forms to Export
      Version 5.60c
      · Fixed MenuBar errors when loading older non Unicode Projects
      Version 5.60
      · Recompiled with PureBasic 5.60
      Version 5.51
      · Recompiled with PureBasic 5.51
      · Added CrashProtection feature. Ability to restore session if PureVision does not exit properly
      · Added ability for PureVision to automatically detect and install the appropriate 32/64bit version of
        PVGadgets
      · Fixed missing Bind for CloseWindow in SpiderBasic Export Module
      Version 5.50
      · Recompiled with PureBasic 5.50
      Version 5.42
      · Recompiled with PureBasic 5.42
      · Fixed export bug when exporting using #PB_Any support
      · Fixed failed install of PVGadgets when PureBasic has been installed into "Program Files" or
        "Program Files (x86)" on Windows 8.1 and Windows 10
      Version 5.41
      · Recompiled with PureBasic 5.41
      · Changed the way PureVision exports Menu Items. Since PureBasic does not allow #PB_Any for
        MenuItem, these values are exported as Enumerated Constants instead of Globals
      Version 5.40
      · Recompiled with PureBasic 5.40
      Version 5.31c
      · Added support for SpiderBasic. Forms can now be exported using optional
           Version 5.31b
           · Fixed bug preventing Language files from loading
           Version 5.31
           · Recompiled with PureBasic 5.31
           · INI file is now stored in User/AppData/Roaming
           Version 5.30c
           · Fixed bug where icons might not display correctly in MenuBar Editor
           · Added ability for ColorRequester to store custom colors
           · Added modify background color of grouped gadgets
           · Added modify foreground color of grouped gadgets
           · Added enable/disable XP Skin support of grouped gadgets
           Version 5.30b
           · Reworked Gadget Repositioning in Gadget Tree
           · Added ability to Archive Project
           Version 5.30
           · Recompiled with PureBasic 5.30
           · Added OpenGL Gadget
           · Added PBAny Support/No Constants, Build and Embed Language File & Export Unicode Export
             Flags are now saved with GUI file
           · Fixed Include Files not being copied into new Include Folder if Save Path was changed
           · Fixed display problem with API Gadgets when adjusting position in ScrollArea or Container Gadget
           Version 5.22d
           · Exported code is now compatible with PureBasic "EnableExplicit" command
           · Fixed bug in exported code using PB_Any support
           Version 5.22c
           · Fixed bug with coloring gadgets using transparent (setting color to -1) and displaying color properly
           Version 5.22b
           · Added Unicode support to PureVision
           · Added Unicode support to PureTrans
           Version 5.22
           · Recompiled with PureBasic 5.22 LTS
           · Fixed bug causing Form to lose focus and not update properly / become unresponsive
           Version 5.21b
           · Reworked some of the draw routines when resizing Forms in PureVision. This should fix some
      Version 5.21
      · Includes PVPlugins for 64bit Windows
      Version 5.20
      · Recompiled with PureBasic 5.20 LTS
      · Fixed Code Export for compatibility with PureBasic 5.20
      · Updated PVGadgets Library for compatibility with PureBasic 5.20
      Version 5.11
      · Recompiled with PureBasic 5.11 to fix bug with "Save Current Form"
      Version 5.10
      · Updated PureSkin to use new Compression Library, making PureSkin compatible with x64
      · Form will now automatically default to Borderless when PureSkin is on a Form
      · Added some missing Flags to Gadgets
      · Added API_ to beginning of Windows specific Flags. Don't use these Flags if building Cross
        Platform Apps.
      Version 5.01
      · Added Font Manager to quickly and easily modify Font attributes of multiple Gadgets
      · Fixed bug with the way Area type Gadgets are exported
      Version 5.00f
      · Removed MenuBar Icons API callback, now uses native PureBasic MenuBar Icons code
      Version 5.00d
      · Added DirectX Gadget (OpenWindowedScreen) - Great for creating template for Windowed Game.
      Version 5.00c
      · Added ability to remove XP Skin Support from individual Gadgets and Forms
      · Added PVGadgets_NoSkin command to PVGadgets User Library
      · Added AutoUpdate Checking so you always know when update is available
      · Fixed problem with images not changing properly in some of the ButtonImage Gadgets due to
        PureBasic changing from SetGadgetState() to SetGadgetAttribute()
           Version 5.00b
           · Both PVGadgets 32bit & 64bit can be installed from same PureVision executable
           Version 5.00
           · Compiled for PureBasic 5.0
           · Added new flags for Forms (OpenWindow)
           Version 4.61e
           · Fixed bug in ListView Gadget where exported code missed extra flags.
           Version 4.61d
           · Added Font support for ExplorerTreeGadget, ExplorerListGadget & ExplorerComboGadget
           Version 4.61b
           · Added Font flag for PanelGadget allowing font used for Panel Tabs to be modified
           Version 4.61
           · Added currently selected Gadget type to bottom of Properties Window
           · Fixed bug with Vertical or Horizontal aligning of Grouped Gadgets
           Version 4.60
           · Added new PureBasic CanvasGadet
           · Added #ThreeState flag for TreeGadget and ListIconGadget
           · Recompiled PVGadgets User Library to support PureBasic 4.60 - 32bit & 64bit
           Version 4.51g
           · MenuBar Editor now allows inserting items where highlighted
           · Made Properties Window re sizable
           · Added some MenuItem commands to PV_Plugins Library
           Version 4.51f
           · Updated flags for many Gadgets
           · Added native coloring for many Gadgets
           Version 4.51e
             · Fixed problem that could cause MenuBar Items to get scrambled when creating a MenuBar
           Version 4.51c
           · Fixed StatusBar resize bug which could cause crash in Unicode or Threadsafe mode
           Version 4.51b
           · Added ability to move menu/toolbar when full screen is disabled
      Version 4.51
      · Added tool tips for IP Gadget
      · Fixed bug with Exit Window hiding behind About screen
      Version 4.50
      · Recompiled for PureBasic 4.50
      Version 4.41b
      · Optimized exported code when including AVI files for AnimGadget
      · Added commands PVGadgets_AnimGadgetPlay, PVGadgets_AnimGadgetStop and
        PVGadgets_AnimGadgetHide for more control over the API AnimGadget
      Version 4.41
      · Added Font & Color support for Editor Gadget
      · Added #CURRENTWINDOW# and #CURRENTGADGET# macro to Code Injector
      Version 4.40
      · Recompiled for PureBasic 4.40
      · PVGadgets ThreadSafe, Unicode & ThreadSafeUnicode are all in one Library now, no need for
        separate subsystem settings.
      Version 4.30
      · Recompiled for PureBasic 4.30
      · Removed export code for versions of PureBasic earlier than 4.30 (use PVXP 4.20 if you want to use
        earlier versions of PureBasic)
      Version 4.20
      · Recompiled for PureBasic 4.20
      Version 4.02
      · PVGadgets is now available in ThreadSafe and Unicode Mode. If you are compiling to Unicode in
        PureBasic check "Create Unicode Executable" under Compiler Options and enter Unicode as Library
        Subsystem. Change "Unicode" to "ThreadSafe" if you are compiling to ThreadSafe.
      · Fixed problem with menubar icons not being copied over with other graphics/icons if new folder is
        selected
      · Fixed EditorGadget and ReadOnly flag
           Version 2.15
           · Changed the way PVXP reads Language files to support more Languages
           Version 2.14
           · Added Code Injection feature to Form and Gadget Properties
           · Added Compile/Run and View Source from PureVisionXP Interface
           · Enhanced the Plug-In support and made simple VD to PV form converter to demonstrate
           · Fixed conflicting Constant problem with StatusBar
           · Updated PVGadgets Library
           Version 2.12
           · Optimized and recompiled PVGadgets library
           · Fixed problem with exported code not using "auto resize image" flag properly for ImageGadget
           · Fixed bug when exporting ImageGadget using PB_Any
           · Fixed small bug with Bubble Tips preference not saving when exiting PVXP
           · Removed #PB_Image_BorderRaised flag from API ProgressBar. Something has changed in PB
             that no longer allows this to work properly.
           Version 2.11
           · Added new PieChart Gadget
           · Added new Functions to PVGadgets Library
           · Fixed problem with required ImageDecoders not being included in Exported code due to case
             sensitive. "png" included decoder, "PNG" did not.
           Version 2.10
           · Added option to bypass "Confirm Overwrite" when Exporting projects
           · Fixed problem with menubar settings not being read from INI file when PVXP is launched from
             double clicking GUI Project Files
           · Fixed problem with images not being copied over when project is saved in a new folder
           Version 2.09
           · Added option to load other Language Files for PVXP interface
           · Added option to select custom AVI for AnimImageGadget
           · Made Properties Window re sizable
           · Fixed problem with tool windows not repositioning on startup
           · Fixed problem with DisableFullScreen flag
           Version 2.08
           · Fixed problem with Online Translator
           Version 2.07
           · Recompiled both PVXP and PVGadgets for PureBasic 3.93
           · Fixed problem with Images folder not being created
           · Fixed problem with CTRL-S and ALT-X not working
      Version 2.06
      · API CanvasGadget and API ProgressBarGadget can now be put into Area/Container Gadgets
      · Fixed Export bug when using CanvasGadget or ProgressBarGadget and the #PB_Any option
      Version 2.05
      · Fixed problem when Merging Forms
      Version 2.04
      · Added coloring for CalendarGadget
      · Added help for PVGadgets_FormatNumber() command under Extra Functions
      · Added a number of ListIcon Functions under Extra Functions
      · Fixed problem with DatePickerGadget format being reset
      Version 2.03
      · Added DisableFullScreen flag to PureVision.ini file
      · Fixed bug that allowed Form to have Font option (causing PVXP shutdown)
      Version 2.02
      · Added PanelGadget information to Help File
      · Recompiled with new PureBasic Gadget Library to fix problem with CalendarGadget
      Version 2.01
      · Fixed problem with Properties Form losing focus when entering ID Name
      · Auto Resize Code is now included when MaximizeGadget is added to Form
      · Added snap grid sizes in PureVision.ini file
      · Updated Help File
      Nov. 08 , 2004
      · PureVisionXP 2.0 officially released on November 8, 2004
Index                           Child 38
                                Child Form 38
                                Close 7
                                Code Generate 6
-A-                             Color 38, 39, 48
                                Color CallBack 48
 About 21
                                Color Gadgets 49
 Add CavasButton 56
                                Coloring 39
 Add Color Gadgets 49
                                Column Width 65
 Add Gadget 25
                                Columns 65
 Add Icon 68
                                Combining Forms 5
 Add Image 68
                                Commands 47
 Add On 14
                                Compile Images 10
 Adding Forms 49
                                Confirm 6, 7
 Adding Gadgets 49
                                Confirm Overwrite 6
 Adding Groups 9
                                Confirm Quit 7
 Adding Windows 49
                                Constant 6
 AnimGadget 52
                                Convert PureSkin 15
 API 25, 29
                                Copy 31
 API Gadgets 25, 29
                                Copy Gadget 31
 App Directory 65
                                copy paste 83
 App Folder 65
                                Copyright 21
 App Path 65
                                Count Columns 65
 Ask to Quit 7
                                Create ImageList 68
 Auto Resize 35
                                Create PureSkin 15
 Auto Sizing 47
                                CreateCanvasButton 56
 Autosizing Gadgets 49
                                Creating Code 6
                                Current Directory 64
-B-                             Current Folder 64
                                Current Path 64
 Bin 8                          Cursors 16
 Bubble 10, 55                  Custom 7
 BubbleTip 55                   Custom Cursor 16
 BubbleTips 10                  Custom Gadgets 29
 Bug Fixes 116                  Custom Pointer 16
 Button Pressed 58              Customize 7
-C-                             -D-
 CallBack 48                    Data 14
 callbacks 83                   Data Sheet 14
 Canvas 55                      Default 8
 Canvas Gadget 55               Default Cursor 78
 CanvasButton 58                Default Pointer 78
 CanvasButtonHover 57           Default Positions 8
 CanvasButtonPressed 58         Delete 34
 Change Icon 69                 Delete CanvasButton   59
© 2018 Reel Media Productions
  125     PureVision
-F-                       Grid 25
                          Grid Size 25
                          Group 8, 33
Field 40
                          Group Gadgets 33
File 4
                          GroupBin 8, 9
File Menu 4
                          Grouping 8, 33
Folder 64, 65
                          Grouping Gadgets 9
Font Color 38
Font Size 38
Font Style 38
Fonts 38
Key words 47
-H-
 Help 20
                                -L-
 Help File 20                   Language 6, 12, 13
 Hide 34, 73                    Language Manager 13
 Hide Gadget 34                 Last Row 67
 Hide Skin 73                   Library 14, 47
 Hiding 34                      License 21
 Highlight 11                   Linux 12
 Highlighting 11                Load 4, 75
 History 116                    Load Project 4
 Horizontal 79, 81              Load PurePoint 75
 Hover 57                       Localize 12
                                Lock Form 49
 Icons 68
 Identify Gadget 79
                                -M-
 Image to PureSkin 15           Main 47
 ImageList 68                   Main Interface 8
 ImageList Icon 68              Make Tool Window 64
 Images 10                      Manual 20
 Images in EXE 10               Maximize 35
 Import 5                       Memory 75
 Importing Forms 5              Menu 47
 Include 10, 11                 MenuBar 4, 22
 Include Images 10              Menubar Editor 23
 Include PureSkin 11            Menubar Icons 23
 Index 47                       Merge 5
 Info 21                        Merging Forms 5
 Information 20, 21             Middle Mouse 22
 Init 47, 52                    More Gadgets 51
 InitAnimGadgets 52             Mouse Move 22
 Initialize Anim 52             Mouse Size 22
 Initializing 47                Move 22
 Initializing PVDynamic 47      Move Gadget 22
 Intro 47                       Multi Language 13
-J-                             -N-
 Justify 66                     Naming Project 5
 Justify Columns      66        Native Gadgets 25
                                New 4
PureTrans 13
-S-                             ToolBar 22
                                ToolBar Editor 23
                                Tools 4, 12
 Save 5
                                Tools Menu 12
 Save Current Form 5
                                ToolTip 55
 Save Form 5
                                Top 8
 Save Project 5
                                Top Most Window 64
 Select 30
                                Top Window 64
 Select Gadgets 30
                                Transparent 39, 64
 Select Row 67
                                Transparent Gadget 39
 Set Column 66
                                Transparent Window 64
 Set Column Width 66
 Set Width 66
 Settings 4
 Single Form 5
                                -U-
 Size 22, 38                    Unfreeze 64
 Skin 15                        Unfreeze Window 64
 Skin from Memory 72            Updates 20, 116
 Skinning 15                    Use Language 12
 Skinning a Form 71, 72         Use PurePoint 76
 Skinning Form 15               User Library 14, 47
 Skins 71, 72
 Snap 25
 Snap to Grid 25                -V-
 spider 111
                                Version 20, 21
 spider basic export 111
                                Version Checking    20
 spiderbasic 111
                                Vertical 80, 82
 Statusbar 40
 Style 38
 Support 20
 Syntax 47
                                -W-
 System Cursor 77               Website 20
 System Pointer 77              Width 65
                                Window on Top 64
                                Window Position 79, 80
-T-                             Window Reset 64
                                Window Transparent 64
 Tab 30, 40
                                Windows 12
 Tab Order 30, 40
 Tabs 40
 Temp Directory 64
 Temp Folder 64
                                -X-
 Temp Path 64                   X Position 79, 81
 Themes 11                      XP Skins 11
                                XP Style 11
© 2018 Reel Media Productions
  129        PureVision
XP Theme 11
-Y-
Y Position   80, 82