'*************************************************************** 
'Type sructures for API's about to be declared... 
TYPE BrowseInfo
     hwndOwner As Long
     pIDLRoot As Long
     pszDisplayName As Long
     lpszTitle As Long
     ulFlags As Long
     lpfnCallback As Long
     lParam As Long
     iImage As Long
END TYPE
DIM cr AS STRING
cr = chr$(10)

TYPE TNOTIFYICONDATA
    cbSize AS DWORD
    hWnd AS LONG
    uID AS LONG
    uFlags AS LONG
    uCallbackMessage AS LONG
    hIcon AS LONG
    szTip AS STRING*64
END TYPE

TYPE TCHOOSECOLOR
    lStructSize AS LONG
    hWndOwner AS LONG
    hInstance AS LONG
    rgbResult AS LONG
    CustColors(1 TO 16) AS LONG
    Flags AS DWORD
    lCustData AS LONG
    lpfnHook AS LONG
    lpTemplateName AS LONG
END TYPE

DIM CC AS TCHOOSECOLOR
DIM NI AS TNotifyIconData

TYPE TPOINT
    X AS LONG
    Y AS LONG
END TYPE

DIM Point AS TPOINT

TYPE MEMORYSTATUS
    dwLength AS LONG
    dwMemoryLoad AS LONG
    dwTotalPhys AS LONG
    dwAvailPhys AS LONG
    dwTotalPageFile AS LONG
    dwAvailPageFile AS LONG
    dwTotalVirtual AS LONG
    dwAvailVirtual AS LONG
END TYPE

DIM MStats AS MEMORYSTATUS

TYPE SYSTEM_INFO
    dwOemID AS LONG
    dwPageSize AS LONG
    lpMinimumApplicationAddress AS LONG
    lpMaximumApplicationAddress AS LONG
    dwActiveProcessorMask AS LONG
    dwNumberOfProcessors AS LONG
    dwProcessorType AS LONG
    dwAllocationGranularity AS LONG
    dwReserved AS LONG
END TYPE

DIM SysInfo AS SYSTEM_INFO

'*************************************************************** 
'Declares for Windows API's... 
DECLARE SUB SetFocus LIB "USER32" ALIAS "SetFocus" (HWnd AS LONG)
DECLARE FUNCTION ExitWindowsEx LIB "USER32" ALIAS "ExitWindowsEx" (uFlags As Long, dwReserved As Long) As Long
DECLARE FUNCTION RegisterHotKey LIB "USER32" ALIAS "RegisterHotKey" (hWnd AS LONG, ID AS LONG, fsModifiers AS LONG, vk AS LONG) AS LONG
DECLARE FUNCTION UnRegisterHotKey LIB "USER32" ALIAS "UnregisterHotKey" (hWnd AS LONG, ID AS LONG) AS LONG
DECLARE FUNCTION SetForegroundWindow LIB "USER32" ALIAS "SetForegroundWindow" (ByVal hwnd AS LONG) AS LONG
'DECLARE SUB SetForeGroundWindow LIB "USER32" ALIAS "SetForeGroundWindow" (HWnd AS LONG) 
DECLARE FUNCTION GetForegroundWindow LIB "USER32" ALIAS "GetForegroundWindow" AS LONG
DECLARE SUB CoTaskMemFree Lib "ole32.dll" ALIAS "CoTaskMemFree" ( hMem As Long)
DECLARE FUNCTION lstrcat Lib "kernel32" ALIAS "lstrcatA" (lpString1 As String, lpString2 As String) As Long
DECLARE FUNCTION SHBrowseForFolder Lib "SHELL32" ALIAS "SHBrowseForFolder" (lpbi As BrowseInfo) As Long
DECLARE FUNCTION SHGetPathFromIDList Lib "SHELL32" ALIAS "SHGetPathFromIDList" (pidList As Long, lpBuffer As String) As Long
DECLARE FUNCTION Shell_NotifyIcon LIB "SHELL32" ALIAS "Shell_NotifyIconA" (dwMessage AS LONG, NIDATA AS TNOTIFYICONDATA) AS LONG
DECLARE FUNCTION ChooseColorDlg LIB "COMDLG32" ALIAS "ChooseColorA" (CC AS TCHOOSECOLOR) AS LONG
DECLARE FUNCTION DragAcceptFiles LIB "SHELL32" ALIAS "DragAcceptFiles" (hWnd AS LONG, Accept AS LONG) AS LONG
DECLARE FUNCTION DragFinish LIB "SHELL32" ALIAS "DragFinish" (hDrop AS LONG) AS LONG
DECLARE FUNCTION DragQueryFile LIB "SHELL32" ALIAS "DragQueryFileA" (hDrop AS LONG, iFile AS LONG, lpszFile AS LONG, cch AS LONG) AS LONG
DECLARE FUNCTION DragQueryPoint LIB "SHELL32" ALIAS "DragQueryPoint" (hDrop AS LONG, lppt AS TPOINT) AS LONG
'DECLARE FUNCTION GetDiskFreeSpaceEx LIB "KERNEL32" ALIAS "GetDiskFreeSpaceExA" (ByVal lpRootPathName AS STRING, ByRef lpFreeBytesAvailableToCaller AS SINGLE, ByRef lpTotalNumberOfBytes AS SINGLE, ByRef lpTotalNumberOfFreeBytes AS SINGLE) AS SINGLE 
DECLARE FUNCTION GetDiskFreeSpace LIB "KERNEL32" ALIAS "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, ByRef lpSectorsPerCluster As Long, ByRef lpBytesPerSector As Long, ByRef lpNumberOfFreeClusters As Long, ByRef lpTtoalNumberOfClusters As Long) AS LONG
DECLARE SUB GlobalMemoryStatus LIB "KERNEL32" ALIAS "GlobalMemoryStatus" (lpBuffer As MEMORYSTATUS)
DECLARE SUB GetSystemInfo LIB "KERNEL32" ALIAS "GetSystemInfo" (lpSystemInfo AS SYSTEM_INFO)

'*************************************************************** 
'Declares for external DLL's... 
DECLARE FUNCTION NViewLibLoad LIB "NVIEWLIB" ALIAS "NViewLibLoad" (FileName AS STRING, Progress AS INTEGER) AS INTEGER

'*************************************************************** 
'Internal declares... 
'General declares... 
DECLARE SUB Initialise
DECLARE SUB SetDefaultSettings
DECLARE SUB ProcessMessages(Hwnd%, Msg%, wParam%, lParam%)
DECLARE SUB AnimateUp
DECLARE SUB AnimateDown
DECLARE SUB AddHistory(History$ AS STRING, CType AS INTEGER)
DECLARE SUB ProcessCommandLine(Key AS WORD, Shift AS INTEGER)
DECLARE SUB ProcCmd2
DECLARE SUB LoadFile(FileName$ AS STRING)
DECLARE SUB SaveFile(FileName$ AS STRING)
DECLARE SUB CmdLineHelp
DECLARE SUB RunFillout
DECLARE SUB OpenFillout
DECLARE SUB ListBindings

'Other declares... 
DECLARE SUB RepaintCanvas
DECLARE FUNCTION BrowseForFolder(hwndOwner As Long, sPrompt As String) As String
DECLARE SUB DrawFormBorder(Sender AS QForm)
DECLARE FUNCTION CMessageBox(Message$ AS STRING, MessageType AS INTEGER, Buttons AS INTEGER) AS INTEGER
DECLARE SUB CMBXBtnClick(Sender AS QButton)
DECLARE SUB MoveCMBXForm(X%, Y%, Shift%)
DECLARE SUB StopMoveCMBXForm(Button%, X%, Y%, Shift%)
DECLARE SUB StartMoveCMBXForm(Button%,X%,Y%,Shift%)
DECLARE SUB ExitProgram
DECLARE SUB ShowOptions
DECLARE SUB AcceptOptions
DECLARE SUB CancelOptions
DECLARE SUB UpdateTracks(Sender AS QTrackBar)
DECLARE SUB ChangePrevFont
DECLARE SUB ChooseSomething(Sender AS QButton)
DECLARE SUB PopulateCPanelList(List AS INTEGER)
DECLARE SUB HideForm
DECLARE SUB SplitString(Stringy$ AS STRING)
DECLARE SUB ShowAbout
DECLARE SUB CloseAbout
DECLARE SUB TrayExit
DECLARE SUB TrayShow
DECLARE FUNCTION Commarise$(InputNum AS INTEGER) AS STRING
DECLARE FUNCTION CmStr$(Inputst$ AS STRING) AS STRING

DECLARE SUB StartMoveForm(Button%,X%,Y%,Shift%,Sender AS QForm)
DECLARE SUB MoveForm(X%, Y%, Shift%,Sender AS QForm)
DECLARE SUB StopMoveForm(Button%, X%, Y%, Shift%,Sender AS QForm)
DECLARE SUB CheckRightClickOnCanvas(Button%, X%, Y%, Shift%)

'Databasing subs... 
DECLARE FUNCTION CountTotalEntries(Null AS INTEGER) AS INTEGER
DECLARE SUB ShowBindForm
DECLARE SUB ShowBindFilled
DECLARE SUB CloseBindForm
DECLARE SUB BindFormSelectType(Sender AS QRadioButton)
DECLARE SUB ChooseFileFold(Sender AS QButton)
DECLARE SUB AddBinding
DECLARE SUB ShowBindEditor
DECLARE SUB CloseBindEditor
DECLARE SUB BindEditorBind
DECLARE SUB UpdateBindEditor
DECLARE SUB RemoveBinding
DECLARE SUB SortEntries
DECLARE SUB SecSort
DECLARE SUB ShowEditBox
DECLARE SUB AcceptEditBox
DECLARE SUB SelectControls
DECLARE SUB SelectFileFolder
DECLARE SUB StartImport
DECLARE SUB CancelImport
DECLARE SUB DoImport