Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

664 lines
22 KiB

//---------------------------------------------------------------------------
// WTD.H
//
// Main header file for Test Driver.
//---------------------------------------------------------------------------
#include "windows.h"
#include <port1632.h>
#include "version.h"
#include "toolmen1.h" // for tool menu definitions
// Menu stuff. MAXMENU is the menu count, INCLUDING the system menu
//---------------------------------------------------------------------------
#define MAXMENU 9
#define WINDOWMENU 6 // position of window menu
#define FILEMENU 0 // position of file menu
// for dynamic tool menu creation
//---------------------------------------------------------------------------
#define TOOLSMENU 4 // position of tools menu
#define NB_MENUS 8 // items and no maximized window
#define MENUSTATICTOOLS 3 // non-removable tool count
#ifdef RC_INVOKED
#define ID(id) id
#else
#define ID(id) MAKEINTRESOURCE(id)
#endif
// Edit control identifier
//---------------------------------------------------------------------------
#define ID_EDIT 0xCAC
// Resource ID's
//---------------------------------------------------------------------------
#define IDMULTIPAD ID(1)
#define IDMULTIPAD2 ID(3)
#define IDNOTE ID(2)
// Window word values for child windows
//---------------------------------------------------------------------------
#define GWW_HWNDEDIT 0
#define GWW_CHANGED 4
#define GWW_BPCOUNT 8
#define GWW_BPLIST 12
#define GWW_UNTITLED 16
#define GWW_RUNNING 20
#define GWW_BPBUTTON 24
#define GWW_FILEIDX 28
#define CBWNDEXTRA 32
// RBEdit Selection types
//----------------------------------------------------------------------------
#define SL_NONE 0 // No selection
#define SL_MULTILINE 1 // Multiline selection
#define SL_SINGLELINE 2 // Selection is contained by one line
// Menu ID's
//
// The IDS_SUBMENU is set to the first sub menu (the system menu), and the
// rest should appear IN ORDER! The IDM_ values are also used as string IDs
//---------------------------------------------------------------------------
#define IDM_MIN 900 // First menu-help id used...
#define IDS_SUBMENU 900
#define IDS_FILEMENU 901
#define IDS_EDITMENU 902
#define IDS_SEARCHMENU 903
#define IDS_RUNMENU 904
#define IDS_TOOLMENU 905
#define IDS_OPTIONSMENU 906
#define IDS_WINDOWMENU 907
#define IDS_HELPMENU 908
#define IDM_FILENEW 1001 // FILE menu
#define IDM_FILEOPEN 1002
#define IDM_FILESAVE 1003
#define IDM_FILESAVEAS 1004
#define IDM_FILESAVEALL 1005
#define IDM_FILECLOSE 1006
#define IDM_FILEPRINT 1007
#define IDM_FILEEXIT 1008
#define IDM_FILEOLD 1009 // First MFO item
#define IDM_FILEOLD1 1009 // These four must be in order...
#define IDM_FILEOLD2 1010
#define IDM_FILEOLD3 1011
#define IDM_FILEOLD4 1012
#define IDM_EDITUNDO 1101 // EDIT menu
#define IDM_EDITCUT 1102
#define IDM_EDITCOPY 1103
#define IDM_EDITPASTE 1104
#define IDM_EDITCLEAR 1105
#define IDM_EDITSELECT 1106
#define IDM_EDITGOTO 1107
#define IDM_SEARCHFIND 1201 // SEARCH menu
#define IDM_SEARCHNEXT 1202
#define IDM_SEARCHPREV 1203
#define IDM_SEARCHREP 1204
#define IDM_RUNSTART 1301 // RUN menu
#define IDM_RUNTRACE 1302
#define IDM_RUNSTEP 1303
#define IDM_RUNBREAK 1304
#define IDM_RUNCHECK 1305
#define IDM_TOGGLEBP 1306
#define IDM_RUNBPLIST 1307
#define IDM_WATTXY 1401 // TOOLS menu
#define IDM_WATTREC 1402
#define IDM_CAPTURE 1403
#define IDM_OPTENV 1501 // OPTIONS menu
#define IDM_OPTRUNTIME 1502
#define IDM_OPTSAVEWND 1503
#define IDM_OPTTOOLS 1504
#define IDM_WINDOWTILE 1601 // WINDOW menu
#define IDM_WINDOWCASCADE 1602
#define IDM_WINDOWCLOSEALL 1603
#define IDM_WINDOWICONS 1604
#define IDM_WINDOWSHOW 1605
#define IDM_WINDOWCHILD 1650 // used for the dynamic menu items...
#define IDM_WINDOWCHILDLAST 1659
#define IDM_HELPINDEX 1701 // HELP menu
#define IDM_HELPSPOT 1702
#define IDM_HELPABOUT 1703
#define IDM_LISTFLAG 1704
#define IDM_MAX 1704 // Last menu-help id used...
//---------------------------------------------------------------------------
// IDM values 7101 through 7101+MAX_TOOL_NB reserved for dynamic tool items
// IDS_ values 9000-9999 are reserved for some tool menu string IDs
// see toolmen1.h for details
//---------------------------------------------------------------------------
// Dialog item id's
//---------------------------------------------------------------------------
#define IDD_ABOUT ID(300)
#define IDD_FIND ID(400)
#define IDD_SEARCH 401
#define IDD_PREV 402
#define IDD_NEXT IDOK
#define IDD_CASE 403
#define IDD_CHGALL 404
#define IDD_WRAP 405
#define IDD_REPL 406
#define IDD_SKIP 407
#define IDD_WORD 408
#define IDD_SAVEAS ID(500)
#define IDD_SAVEFROM 501
#define IDD_SAVETO 502
#define IDD_SAVE 503
#define IDD_PRINT ID(600)
#define IDD_PRINTDEVICE 601
#define IDD_PRINTPORT 602
#define IDD_PRINTTITLE 603
#define IDD_FONT ID(700)
#define IDD_FACES 701
#define IDD_SIZES 702
#define IDD_BOLD 703
#define IDD_ITALIC 704
#define IDD_FONTTITLE 705
#define IDD_CMD 800
#define IDD_TMODE 801
#define IDD_COMPONLY 802
#define IDD_QUERYSAVE 803
#define IDD_AUTOMINI 804
#define IDD_AUTOREST 805
#define IDD_ALWAYS 806
#define IDD_QUERY 807
#define IDD_NEVER 808
#define IDD_CHGARGS 809
#define IDD_DEFINE 810
#define IDD_DEFLIST 811
#define IDD_ADD 812
#define IDD_REMOVE 813
#define IDD_CHKARY 814
#define IDD_CHKPTR 815
#define IDD_CMPDLG 816
#define IDD_REMALL 816
#define IDD_GOTO 817
#define IDD_BPLIST 818
#define IDD_TABSTOPS 819
#define IDD_BACKUP 820
#define IDD_REMOVEALL 821
#define IDD_CDECL 822
#define IDD_EXPDECL 823
#define IDD_PRTSETUP ID(900)
#define IDD_PTRLIST 901
#define IDD_SETUP 902
#define IDD_ERRMSG 1000
#define IDD_ERRTYPE 1001
#define IDD_ERRFILE 1002
#define IDD_ERRLINE 1003
#define IDD_STAT 1100
#define IDD_INSEDIT 1200
#define IDD_INSCLIP 1201
#define IDD_SENDVP 1202
#define IDD_STATUS 1203
#define IDD_FORMAT 1204
#define IDD_COORDS 1205
#define IDD_KEYSTROKES 1300
#define IDD_CLICKS 1301
#define IDD_MOVEMENTS 1302
#define IDD_WINDOW 1303
#define IDD_SCREEN 1304
#define IDD_RECSTRINGLEN 1400
#define IDD_RECDECL 1401
#define IDD_RECKEYBAL 1402
#define IDD_RECINSCUR 1403
#define IDD_RECINSNEW 1404
#define IDD_RECINSCLPBRD 1405
#define IDD_PAUSELIMIT 1406
#define IDD_RECFILE 1500
#define IDD_BROWSE 1501
#define IDD_DLG 1502
#define IDD_SCRN 1503
#define IDD_CMPPROCESS 1600
#define IDD_CMPFILE 1601
#define IDD_CMPCURLINE 1602
#define IDD_CMPTOTLINE 1603
#define IDD_CMPCANCEL 1604
#define WM_BUFFERFULL (WM_USER+200)
#define WM_STOPRECORD (WM_USER+201)
/* strings */
#define IDS_CANTOPEN 1
#define IDS_CANTREAD 2
#define IDS_CANTCREATE 3
#define IDS_CANTWRITE 4
#define IDS_READONLY 5
#define IDS_ILLFNM 6
#define IDS_ADDEXT 7
#define IDS_CLOSESAVE 8
#define IDS_CANTFIND 9
#define IDS_HELPNOTAVAIL 10
#define IDS_ALREADY 11
#define IDS_TOOBIG 12
#define IDS_NOBPMEM 13
#define IDS_OVERWRITE 14
#define IDS_OUTOFMEM 15
#define IDS_UNTITLED 16
#define IDS_APPRUN 17
#define IDS_APPNAME 18
#define IDS_USAGE 19
#define IDS_QSAVE 20
#define IDS_PARSEOK 21
#define IDS_CANTINIT 22
#define IDS_DESIGN 23
#define IDS_SCAN 24
#define IDS_PARSE 25
#define IDS_BIND 26
#define IDS_RUN 27
#define IDS_BREAK 28
#define IDS_MAXSYM 29
#define IDS_RUDE 30
#define IDS_FULL 31
#define IDS_WRAPPED 32
#define IDS_LONGLINE 33
#define IDS_PRINTJOB 34
#define IDS_PRINTERROR 35
#define IDS_NEWEDIT 36
// These are the Get XY formats (not sprintf format strings)
//---------------------------------------------------------------------------
#define FMTDELTA 3
#define FMTDELTAONLY 5
#define IDS_FORM1 37
#define IDS_FORM2 38
#define IDS_FORM3 39
#define IDS_FORM4 40
#define IDS_FORM5 41
#define IDS_FORM6 42
#define IDS_FORM7 43
#define IDS_FORMLAST 43
#define IDS_FMT1 44
#define IDS_FMT2 45
#define IDS_FMT3 46
#define IDS_FMT4 44 // (same as FMT1)
#define IDS_FMT5 45 // (same as FMT2)
#define IDS_FMT6 47
#define IDS_FMT7 48
#define IDS_FMTDLG 49
#define IDS_STEPFAIL 50
#define IDS_CANTBAK 51
#define IDS_BAKEXT 52
#define IDS_CANTREC 53
#define IDS_WATTEVNT 54
#define IDS_RECFULL 55
#define IDS_LOADEVNT 56
#define IDS_CANTCLIP 57
#define IDS_INVRECLEN 58
#define IDS_RECTEXT 59
#define IDS_EDITMEM 60
#define IDS_CANTNEW 61
#define IDS_DLGFILES 62
#define IDS_DLGMASK 63
#define IDS_DLGEXT 64
#define IDS_SCRFILES 65
#define IDS_SCRMASK 66
#define IDS_SCREXT 67
#define IDS_LOADLIB 68
#define IDS_TESTDLGS 69
#define IDS_TESTSCRN 70
#define IDS_BADCAPFILE 71
#define IDS_DLGTITLE 72
#define IDS_SCRTITLE 73
#define IDS_DUMPERR 74
#define IDS_CAPTITLE 75
#define IDS_DLGCODE 76
#define IDS_SCRCODE 77
#define IDS_RECCLIPPED 78
#define IDS_VPRUNTITLE 79
#define IDS_APPBRK 80
#define IDS_BADSYM 81
#define IDS_DLGIFCHK 82
#define IDS_SCRIFCHK 83
#define IDS_BADLINE 84
#define IDS_MANYBP 85
#define IDS_PAUSELIMIT 86
#define IDS_MANYSYMBOLS 87
#define IDS_CHILDMENU 88
#define IDS_CANTDUP 89
#define IDS_SCANERR 1540 // Scan-time error
#define IDS_PARSEERR 1541 // Parse-time error
#define IDS_BINDERR 1542 // Bind-time error
#define IDS_RUNERR 1543 // Run-time error
// These are the InitializeMenu "clash" bits - if the current status word
// clashes with one of these fields (initialized in the IMStat[] array) for
// a menu item, then it is grayed.
//---------------------------------------------------------------------------
#define IM_RUNMODE 1
#define IM_RUNNING 2
#define IM_UNCHANGED 4
#define IM_NOACTIVE 8
#define IM_CANTUNDO 16
#define IM_NOSEL 32
#define IM_NOCLPTXT 64
#define IM_NOSRCHTXT 128
#define IM_DESMODE 256
#define IM_NYI 512
#define IM_LOCKED 1024
#define IM_NOBPS 2048
#define IM_EDITEMPTY 4096
/* attribute flags for DlgDirList */
#define ATTR_DIRS 0xC010 /* find drives and directories */
#define ATTR_FILES 0x0000 /* find ordinary files */
#define PROP_FILENAME szPropertyName /* name of property for dialog */
// INI file flag constants
//---------------------------------------------------------------------------
#define XY_INSEDIT 0x0001
#define XY_INSCLIP 0x0002
#define XY_VIEWPORT 0x0004
#define XY_STATBAR 0x0008
#define ENV_SAVENEVER 0x0000
#define ENV_SAVEALWAYS 0x0001
#define ENV_SAVEASK 0x0002
#define ENV_SAVEACTION 0x0003 // combinations of above three
#define ENV_AUTOMINI 0x0004
#define ENV_AUTOREST 0x0008
#define ENV_QUERYSAVE 0x0010
#define ENV_RTARGS 0x0020
#define ENV_BACKUP 0x0040
#define ENV_CMPDLG 0x0080
#define SRCH_SRCHCASE 0x0001
#define SRCH_WHOLEWORD 0x0002
#define REC_INSCUR 0x0000
#define REC_INSNEW 0x0001
#define REC_INSCLIP 0x0002
#define REC_INSERT 0x0003
#define REC_KEYS 0x0004
#define REC_CLICKS 0x0008
#define REC_MOVES 0x0010
#define REC_RELWND 0x0020
#define REC_INCDECL 0x0040
#define REC_BALANCE 0x0080
#define RF_SAVERTA 0x0001
#define RF_ARRAYCHECK 0x0002
#define RF_PTRCHECK 0x0004
#define RF_CDECL 0x0008
#define RF_EXPDECL 0x0010
#define IsWordChar(c) (isalnum(c) || (c=='_'))
#define WM_SETBUTTONS (WM_USER+600)
#define ID_RECTIMER 5
#ifndef LmemAlloc
#define LmemAlloc(b) LocalAlloc(LMEM_MOVEABLE,b)
#define LptrAlloc(b) LocalAlloc(LMEM_FIXED,b)
#define LmemRealloc(h,b) LocalReAlloc(h,b,LMEM_MOVEABLE)
#define LmemLock(h) LocalLock(h)
#define LmemUnlock(h) LocalUnlock(h)
#define LmemFree(h) LocalFree(h)
#define LmemSize(h) LocalSize(h)
#endif
/*
* External variable declarations
*/
#define MAXSYMLEN 16
typedef CHAR SYMBOL[MAXSYMLEN+1];
typedef struct _errstruct
{
INT typemsg; // ID of type message
LPSTR msgtext; // Pointer to message
INT lineno; // Line number
CHAR fname[24]; // File name
} ERRSTRUCT;
typedef struct _ims
{
INT mid;
INT flags;
} IMS;
// Here's a great big pile of global variable declarations. The variables
// are "really" declared in the module that uses them either the most or the
// first time, or just because that's where they're defined.
//
// Defined in WTDMAIN.C:
//---------------------------------------------------------------------------
extern SYMBOL DefSym[]; // Symbol space
extern HANDLE hInst, // Application instance handle
hAccel; // Resource handle of accelerators
extern HWND hwndFrame, // Main window handle
hwndMDIClient, // Handle of MDI Client window
hwndActive, // Handle of current active MDI child
hwndActiveEdit; // Handle of edit control in active child
extern INT ChildState, // Child window status (non-zero = zoomed)
VPHidden, // ViewPort Hidden flag
componly, // Compile only flag
qsave, // Query save changed files before run flag
AutoMini, // Minimize before run flag
AutoRest, // Restore after run flag
fBackup, // Create backup files flag
TabStops, // Tabstops value
SaveAction, // Save window settings flag
SaveRTA, // Save Runtime Args flag
ChgArgs, // Bring up RTA dialog before running
fWattXY, // WATTXY flag
NOERRDLG, // FALSE -> don't give error dialog
Frx, Fry, // Frame window location
Frh, Frw, // Frame window dimensions
SymCount; // Symbol count
extern CHAR *DefPtrs[], // Symbol pointers
szStatText[80], // Status bar text buffer
szDrvr[], // TESTDRVR name (ini file)
szIni[128], // INI file name
szIniName[], // INI file name
*szModName, // Module file name
szVersion[], // Version buffer
szEditVer[], // RBEdit version string
cmdbuf[81], // COMMAND$ buffer
tmbuf[81]; // TESTMODE$ buffer
extern BOOL fStepFlags;
// Defined in WTDINIT.C:
//---------------------------------------------------------------------------
extern CHAR szChild[]; // Class of child
extern CHAR *pFileOpened[]; // Last 4 opened files
extern INT iFileCount; // Number of files in above list
extern INT NextFile; // Next file (for File.New ScriptXXX)
// Defined in WTDFIND.C:
//---------------------------------------------------------------------------
extern BOOL fCase; // Search case sensitivity flag
extern CHAR szSearch[]; // Search string
// Defined in WTDFILE.C:
//---------------------------------------------------------------------------
extern INT RunMode, // Run mode flag
BreakMode, // Break mode flag
BreakReturn; // Breakmode proc return value
#ifdef DEBUG
extern BOOL fDiags;
#endif
// Defined in VIEWPORT.C:
//---------------------------------------------------------------------------
extern INT VPx, VPy, // Viewport location
VPh, VPw; // ViewPort dimensions
// Defined in COMPDLG.C:
//---------------------------------------------------------------------------
extern BOOL fDoCmpDlg; // Display compilation dialog?
extern BOOL fAbortCompile; // Compilation abort flag
extern FARPROC lpfnCmpDlg; // Comp dialog proc address
extern HWND hwndCmpDlg; // Comp dialog handle
// Defined in WTDSREP.C:
//---------------------------------------------------------------------------
extern CHAR szSrchbuf[80], // Search text
szReplbuf[80]; // Replacement text
extern INT fSrchCase, // Case sensitivity flag
WholeWord, // Whole word flag
SRx, SRy; // Coorindates of srch/rep dialog
// Defined in WATTREC.C:
//---------------------------------------------------------------------------
extern BOOL fRecKeys, // Record keystrokes
fRecClicks, // Record mouse clicks/drags
fRecMoves, // Record all mouse events
fRecRelWnd, // Record relative to window flag
fWattRec, // TRUE -> in record mode
fRecIncDecl, // Include declarations flag
fRecBalance, // Balance keystrokes flag
fCapDlg, // Record a dialog capture flag
fCapClip; // Put comparison code on clipboard flag
extern INT iRecInsert, // Recorder output destination
iRecLen, // Maximum string length
iRecPause; // Pause threshold
extern CHAR szRecorder[]; // Recorder name (ini file heading)
extern HBITMAP hBitmap []; // Bitmap handles for recorder animation
// Defined in WATTXY.C:
//---------------------------------------------------------------------------
extern BOOL fInsEdit, // Insert in current window
fInsClip, // Insert in clipboard
fVP, // Put coordinates on viewport
fStatbar; // Put coordinates on status bar
extern INT iFmtIndex; // Coordinate format index
extern CHAR szXY[];
// Defined somewhere in WTDBASIC.LIB
//---------------------------------------------------------------------------
extern HWND hwndViewPort; // Handle to ViewPort window
extern INT BreakFlag; // Break flag in GLOBALS.H
extern INT SLEEPING; // SLEEPING flag in Globals.h
extern INT listflag; // Produce assembly listing
extern INT ExitVal; // return code
/* externally declared functions
*/
extern BOOL APIENTRY InitializeApplication(VOID);
extern BOOL APIENTRY InitializeInstance(LPSTR,INT);
extern BOOL APIENTRY AboutDlgProc(HWND,WORD,WPARAM,LPARAM);
extern BOOL APIENTRY RunargsDlgProc(HWND,WORD,WPARAM,LPARAM);
extern LONG APIENTRY RunerrDlgProc(HWND,WORD,WPARAM,LPARAM);
extern BOOL APIENTRY EnvDlgProc(HWND,WORD,WPARAM,LPARAM);
extern BOOL APIENTRY GotoDlgProc(HWND,WORD,WPARAM,LPARAM);
extern HWND APIENTRY AddFile(LPSTR);
extern VOID AddFileToMFOL (LPSTR);
extern VOID BubbleMFOLItem (LPSTR);
extern HWND LoadNewFile (LPSTR);
extern VOID APIENTRY WTDReadFile(HWND);
extern BOOL APIENTRY SaveFile(HWND);
extern VOID APIENTRY RunFile(HWND, INT);
extern BOOL APIENTRY ChangeFile(HWND);
extern INT APIENTRY LoadFile(HWND, LPSTR);
extern VOID APIENTRY PrintFile(HWND);
extern BOOL APIENTRY GetInitializationData(HWND);
extern SHORT FAR CDECL MPError (HWND, UINT, UINT, ...);
extern VOID APIENTRY Find(VOID);
extern VOID APIENTRY FindNext(VOID);
extern VOID APIENTRY FindPrev(VOID);
extern LONG APIENTRY FrameWndProc(HWND,WORD,WPARAM,LPARAM);
extern LONG APIENTRY MDIChildWndProc(HWND,WORD,WPARAM,LPARAM);
extern HDC APIENTRY GetPrinterDC(INT);
extern VOID APIENTRY SetSaveFrom (HWND, PSTR);
extern BOOL APIENTRY RealSlowCompare (LPSTR, PSTR);
extern VOID APIENTRY FindPrev (VOID);
extern VOID APIENTRY FindNext (VOID);
extern BOOL APIENTRY IsWild (PSTR);
extern VOID APIENTRY SelectFile (HWND);
extern VOID APIENTRY WATTFindText (INT, UINT);
extern LONG APIENTRY CompileDlgProc (HWND, WORD, WPARAM, LPARAM);
extern BOOL APIENTRY PrtSetupDlgProc (HWND, WORD, WPARAM, LPARAM);
extern BOOL APIENTRY SearchDlgProc (HWND, WORD, WPARAM, LPARAM);
extern LONG APIENTRY StatusBarWndProc (HWND, WORD, WPARAM, LPARAM);
extern WORD APIENTRY BPListDlgProc (HWND, WORD, WPARAM, LPARAM);
extern VOID APIENTRY SelectPrintDevice (HWND);
extern VOID WriteStringToINI (CHAR *, CHAR *, ...);
extern VOID WriteAppStringToINI (CHAR *, CHAR *, CHAR *, ...);
extern BOOL GetActivePrinter (VOID);
extern HANDLE LoadScriptModule (LPSTR, LPSTR, BOOL);
extern VOID SetStatus (INT);
extern VOID Change (HWND);
extern HWND AlreadyOpen (CHAR FAR *);
extern INT EnsureExt (CHAR FAR *, INT);
extern VOID SelectErrorText (INT);
extern INT EnableViewport (INT);
extern HWND SetupViewport (VOID);
extern LPSTR LockEditText (HANDLE, HANDLE);
extern VOID UnlockEditText (HANDLE, HANDLE);
VOID PaintStatus (HDC, INT);
VOID DrawAllBPLines (HWND);
LONG APIENTRY DummyWndProc (HWND, WORD, WPARAM, LPARAM);
LONG APIENTRY WTDVPWndProc (HWND, WORD, WPARAM, LPARAM);
BOOL APIENTRY QueryCloseAllChildren ( VOID );
INT APIENTRY QueryCloseChild (HWND, INT);
VOID APIENTRY CommandHandler (HWND, WPARAM, LPARAM);
VOID APIENTRY InitializeMenu (HANDLE);
VOID SaveAllChildren (VOID);
VOID SaveEnvironmentFlags (VOID);
VOID SaveRuntimeArgs (INT);
VOID SaveWindowStatus (VOID);
VOID ToggleBreakpoint (HWND, INT);
BOOL StartCompDlg (HWND);
VOID TerminateCompDlg (VOID);
BOOL UpdateCompDlg (INT, LPSTR, UINT, UINT);
VOID HelpIndex (VOID);
VOID HelpQuit (VOID);
VOID HelpSpot (HWND);
VOID SetHelpFileName (VOID);
VOID WattXYStart (HWND);
LONG WattXYWndProc (HWND, WORD, WPARAM, LPARAM);
VOID WattRecStart (HWND);
VOID RecordScreenCapture (HWND);
LONG RecorderWndProc (HWND, WORD, WPARAM, LPARAM);
VOID HandleDisables (HWND);
extern HANDLE RBLoadLibrary (LPSTR);