-// --- VERSION 5.00
-// --- Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
-// --- Begin VB.Form MainForm
-// --- AutoRedraw = -1 'True // True
-// --- Caption = "MegaPlex"
-// --- ClientHeight = 5850
-// --- ClientLeft = 2580
-// --- ClientTop = 2205
-// --- ClientWidth = 9285
-// --- Icon = "MainForm.frx":0000
-// --- LinkTopic = "Form1"
-// --- ScaleHeight = 390
-// --- ScaleMode = 3 'Pixel // Pixel
-// --- ScaleWidth = 619
-// --- Begin VB.Timer fpsTim
-// --- Enabled = 0 'False // False
-// --- Interval = 200
-// --- Left = 1380
-// --- Top = 2940
-// --- End
-// --- Begin VB.Timer FocusTim
-// --- Interval = 50
-// --- Left = 1920
-// --- Top = 2940
-// --- End
-// --- Begin MSComDlg.CommonDialog cmDlg
-// --- Left = 240
-// --- Top = 2880
-// --- _ExtentX = 847
-// --- _ExtentY = 847
-// --- _Version = 393216
-// --- CancelError = -1 'True // True
-// --- End
-// --- Begin VB.Timer PanelTim
-// --- Enabled = 0 'False // False
-// --- Interval = 5
-// --- Left = 840
-// --- Top = 2940
-// --- End
-// --- Begin VB.Frame Panel
-// --- Height = 1140
-// --- Left = 180
-// --- TabIndex = 2
-// --- Top = 3540
-// --- Width = 9015
-// --- Begin VB.CommandButton cmdPlay
-// --- DisabledPicture = "MainForm.frx":0442
-// --- DownPicture = "MainForm.frx":058C
-// --- Height = 345
-// --- Left = 5820
-// --- Picture = "MainForm.frx":06D6
-// --- Style = 1 'Graphical // Graphical
-// --- TabIndex = 16
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 495
-// --- End
-// --- Begin VB.CommandButton cmdStop
-// --- DisabledPicture = "MainForm.frx":0820
-// --- DownPicture = "MainForm.frx":096A
-// --- Enabled = 0 'False // False
-// --- Height = 345
-// --- Left = 7020
-// --- Picture = "MainForm.frx":0AB4
-// --- Style = 1 'Graphical // Graphical
-// --- TabIndex = 15
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 495
-// --- End
-// --- Begin VB.CommandButton cmdPlayDemo
-// --- DisabledPicture = "MainForm.frx":0BFE
-// --- DownPicture = "MainForm.frx":0D48
-// --- Enabled = 0 'False // False
-// --- Height = 345
-// --- Left = 7740
-// --- Picture = "MainForm.frx":0E92
-// --- Style = 1 'Graphical // Graphical
-// --- TabIndex = 14
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 495
-// --- End
-// --- Begin VB.CommandButton cmdPause
-// --- DisabledPicture = "MainForm.frx":0FDC
-// --- DownPicture = "MainForm.frx":1126
-// --- Enabled = 0 'False // False
-// --- Height = 345
-// --- Left = 6420
-// --- Picture = "MainForm.frx":1270
-// --- Style = 1 'Graphical // Graphical
-// --- TabIndex = 13
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 495
-// --- End
-// --- Begin VB.CommandButton cmdRecordDemo
-// --- DisabledPicture = "MainForm.frx":13BA
-// --- DownPicture = "MainForm.frx":1504
-// --- Height = 345
-// --- Left = 8340
-// --- Picture = "MainForm.frx":164E
-// --- Style = 1 'Graphical // Graphical
-// --- TabIndex = 12
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 495
-// --- End
-// --- Begin VB.ComboBox cmbFile
-// --- BackColor = &H00000000&
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- ForeColor = &H00FF8080&
-// --- Height = 345
-// --- Left = 120
-// --- Sorted = -1 'True // True
-// --- Style = 2 'Dropdown List // Dropdown List
-// --- TabIndex = 9
-// --- Top = 240
-// --- Width = 3015
-// --- End
-// --- Begin VB.ComboBox cmbLevel
-// --- BackColor = &H00000000&
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- ForeColor = &H00FF8080&
-// --- Height = 345
-// --- Left = 840
-// --- Sorted = -1 'True // True
-// --- Style = 2 'Dropdown List // Dropdown List
-// --- TabIndex = 5
-// --- Top = 660
-// --- Width = 4035
-// --- End
-// --- Begin VB.PictureBox picKeys
-// --- BackColor = &H00008080&
-// --- BorderStyle = 0 'None // None
-// --- Height = 330
-// --- Left = 5400
-// --- ScaleHeight = 22
-// --- ScaleMode = 3 'Pixel // Pixel
-// --- ScaleWidth = 22
-// --- TabIndex = 4
-// --- TabStop = 0 'False // False
-// --- Top = 240
-// --- Width = 330
-// --- Begin VB.Shape shpKey
-// --- FillColor = &H00008000&
-// --- FillStyle = 0 'Solid // Solid
-// --- Height = 120
-// --- Index = 1
-// --- Left = 0
-// --- Shape = 5 'Rounded Square // Rounded Square
-// --- Top = 0
-// --- Width = 120
-// --- End
-// --- End
-// --- Begin VB.CommandButton cmdPlayAll
-// --- Caption = "Play All Demos"
-// --- Enabled = 0 'False // False
-// --- Height = 345
-// --- Left = 7380
-// --- TabIndex = 3
-// --- TabStop = 0 'False // False
-// --- Top = 960
-// --- Visible = 0 'False // False
-// --- Width = 1395
-// --- End
-// --- Begin VB.Shape shpProgress
-// --- BackColor = &H00800000&
-// --- BackStyle = 1 'Opaque // Opaque
-// --- Height = 75
-// --- Left = 120
-// --- Top = 1020
-// --- Visible = 0 'False // False
-// --- Width = 7515
-// --- End
-// --- Begin VB.Label lblStatus
-// --- Alignment = 2 'Center // Center
-// --- BorderStyle = 1 'Fixed Single // Fixed Single
-// --- Caption = "MegaPlex"
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- Height = 345
-// --- Left = 3240
-// --- TabIndex = 11
-// --- Top = 240
-// --- Width = 2055
-// --- End
-// --- Begin VB.Image Image2
-// --- Height = 240
-// --- Left = 6780
-// --- Picture = "MainForm.frx":1BD8
-// --- Top = 720
-// --- Width = 240
-// --- End
-// --- Begin VB.Image Image1
-// --- Height = 240
-// --- Left = 5880
-// --- Picture = "MainForm.frx":1D22
-// --- Top = 720
-// --- Width = 240
-// --- End
-// --- Begin VB.Label lblFps
-// --- Alignment = 2 'Center // Center
-// --- BackColor = &H00000000&
-// --- BorderStyle = 1 'Fixed Single // Fixed Single
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- ForeColor = &H0000C0C0&
-// --- Height = 345
-// --- Left = 120
-// --- TabIndex = 10
-// --- Top = 660
-// --- Width = 615
-// --- End
-// --- Begin VB.Label lblInfoCount
-// --- Alignment = 2 'Center // Center
-// --- BackColor = &H00000000&
-// --- BorderStyle = 1 'Fixed Single // Fixed Single
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- ForeColor = &H00FF8080&
-// --- Height = 345
-// --- Left = 5040
-// --- TabIndex = 8
-// --- Top = 660
-// --- Width = 795
-// --- End
-// --- Begin VB.Label lblRedDiskCount
-// --- Alignment = 2 'Center // Center
-// --- BackColor = &H00000000&
-// --- BorderStyle = 1 'Fixed Single // Fixed Single
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- ForeColor = &H000000FF&
-// --- Height = 345
-// --- Left = 6240
-// --- TabIndex = 7
-// --- Top = 660
-// --- Width = 495
-// --- End
-// --- Begin VB.Label lblFrameCount
-// --- Alignment = 2 'Center // Center
-// --- BorderStyle = 1 'Fixed Single // Fixed Single
-// --- Caption = "0"
-// --- BeginProperty Font
-// --- Name = "Fixedsys"
-// --- Size = 9
-// --- Charset = 0
-// --- Weight = 400
-// --- Underline = 0 'False // False
-// --- Italic = 0 'False // False
-// --- Strikethrough = 0 'False // False
-// --- EndProperty
-// --- Height = 345
-// --- Left = 7200
-// --- TabIndex = 6
-// --- Top = 660
-// --- Width = 1635
-// --- End
-// --- End
-// --- Begin VB.PictureBox picViewPort
-// --- BorderStyle = 0 'None // None
-// --- Height = 2535
-// --- Left = 180
-// --- ScaleHeight = 169
-// --- ScaleMode = 3 'Pixel // Pixel
-// --- ScaleWidth = 265
-// --- TabIndex = 0
-// --- TabStop = 0 'False // False
-// --- Top = 180
-// --- Width = 3975
-// --- Begin VB.PictureBox picPane
-// --- AutoSize = -1 'True // True
-// --- BackColor = &H00000000&
-// --- BorderStyle = 0 'None // None
-// --- DrawWidth = 3
-// --- Height = 1635
-// --- Left = 240
-// --- ScaleHeight = 109
-// --- ScaleMode = 3 'Pixel // Pixel
-// --- ScaleWidth = 129
-// --- TabIndex = 1
-// --- Top = 180
-// --- Width = 1935
-// --- End
-// --- Begin VB.PictureBox picFrame
-// --- Height = 915
-// --- Left = 1320
-// --- ScaleHeight = 57
-// --- ScaleMode = 3 'Pixel // Pixel
-// --- ScaleWidth = 81
-// --- TabIndex = 17
-// --- TabStop = 0 'False // False
-// --- Top = 1200
-// --- Width = 1275
-// --- End
-// --- End
-// --- Begin VB.Menu menFile
-// --- Caption = "&File"
-// --- Begin VB.Menu menNewStd
-// --- Caption = "New S&tandard Level"
-// --- End
-// --- Begin VB.Menu menNew
-// --- Caption = "&New Level"
-// --- End
-// --- Begin VB.Menu menDash5
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menOpen
-// --- Caption = "&Open"
-// --- End
-// --- Begin VB.Menu menSave
-// --- Caption = "&Save"
-// --- Shortcut = ^S
-// --- End
-// --- Begin VB.Menu menSaveAs
-// --- Caption = "Save &As ..."
-// --- End
-// --- Begin VB.Menu menDash4
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menExit
-// --- Caption = "E&xit"
-// --- Shortcut = ^Q
-// --- End
-// --- End
-// --- Begin VB.Menu menEditMain
-// --- Caption = "&Edit"
-// --- Begin VB.Menu menEdit
-// --- Caption = "&Edit Level"
-// --- End
-// --- Begin VB.Menu menDash3
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menCopy
-// --- Caption = "&Copy"
-// --- Shortcut = ^C
-// --- End
-// --- Begin VB.Menu menPaste
-// --- Caption = "&Paste"
-// --- Shortcut = ^V
-// --- End
-// --- Begin VB.Menu menTrim
-// --- Caption = "&Trim"
-// --- Shortcut = ^T
-// --- End
-// --- Begin VB.Menu menDash8
-// --- Caption = "-"
-// --- Index = 1
-// --- End
-// --- Begin VB.Menu menSelectAll
-// --- Caption = "Select &All"
-// --- Shortcut = ^A
-// --- End
-// --- Begin VB.Menu menDash6
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menRestoreBorder
-// --- Caption = "Restore &border"
-// --- Shortcut = ^B
-// --- End
-// --- Begin VB.Menu menSp
-// --- Caption = "Special Port"
-// --- Begin VB.Menu menGravOn
-// --- Caption = "&Gravity On"
-// --- End
-// --- Begin VB.Menu menZonkOn
-// --- Caption = "Freeze &Zonks On"
-// --- End
-// --- Begin VB.Menu menEnOn
-// --- Caption = "Freeze &Enemies On"
-// --- End
-// --- Begin VB.Menu menDash7
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menGravOff
-// --- Caption = "Gravity &Off"
-// --- End
-// --- Begin VB.Menu menZonkOff
-// --- Caption = "Freeze Zon&ks Off"
-// --- End
-// --- Begin VB.Menu menEnOff
-// --- Caption = "Freeze E&nemies Off"
-// --- End
-// --- Begin VB.Menu menDash10
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menRemSP
-// --- Caption = "&Remove (Make Normal Port)"
-// --- End
-// --- End
-// --- End
-// --- Begin VB.Menu menView
-// --- Caption = "&View"
-// --- Begin VB.Menu menZoom
-// --- Caption = "&Zoom"
-// --- Begin VB.Menu menStretch
-// --- Caption = "0.25 : 1"
-// --- Index = 1
-// --- End
-// --- End
-// --- Begin VB.Menu menBorder
-// --- Caption = "Show &Border"
-// --- Checked = -1 'True // True
-// --- End
-// --- Begin VB.Menu menPanel
-// --- Caption = "Show &Panel"
-// --- Checked = -1 'True // True
-// --- End
-// --- Begin VB.Menu menAutoScroll
-// --- Caption = "&Autoscroll"
-// --- Checked = -1 'True // True
-// --- End
-// --- Begin VB.Menu menDash9
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menShowLInfo
-// --- Caption = "Show Level &Info"
-// --- End
-// --- End
-// --- Begin VB.Menu menSound
-// --- Caption = "&Sound"
-// --- Begin VB.Menu menSoundFX
-// --- Caption = "&FX"
-// --- End
-// --- Begin VB.Menu menMusic
-// --- Caption = "&Music"
-// --- Enabled = 0 'False // False
-// --- End
-// --- End
-// --- Begin VB.Menu menSpeed
-// --- Caption = "Speed"
-// --- Begin VB.Menu menSpeedPlay
-// --- Caption = "Game play"
-// --- Index = 11
-// --- Begin VB.Menu menPlaySpeed
-// --- Caption = "1"
-// --- Index = 1
-// --- End
-// --- End
-// --- Begin VB.Menu menSpeedDemo
-// --- Caption = "Demo playback"
-// --- Begin VB.Menu menDemoSpeed
-// --- Caption = "1"
-// --- Index = 1
-// --- End
-// --- End
-// --- Begin VB.Menu menSpeedDash
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menFaster
-// --- Caption = "Faster (Pg Up)"
-// --- End
-// --- Begin VB.Menu menSlower
-// --- Caption = "Slower (Pg Down)"
-// --- End
-// --- End
-// --- Begin VB.Menu menRun
-// --- Caption = "&Play"
-// --- Begin VB.Menu menPlay
-// --- Caption = "P&lay Game (Space)"
-// --- End
-// --- Begin VB.Menu menPause
-// --- Caption = "&Pause (P)"
-// --- Enabled = 0 'False // False
-// --- End
-// --- Begin VB.Menu menStop
-// --- Caption = "&Stop (Q)"
-// --- Enabled = 0 'False // False
-// --- End
-// --- Begin VB.Menu menDash0
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menRec
-// --- Caption = "&Record Demo (Ctrl+R)"
-// --- End
-// --- Begin VB.Menu menPlayDemo
-// --- Caption = "Play &Demo (Ctrl+Space)"
-// --- End
-// --- Begin VB.Menu menPlayAll
-// --- Caption = "Play &All Demos"
-// --- End
-// --- End
-// --- Begin VB.Menu menOptionsMain
-// --- Caption = "&Options"
-// --- Begin VB.Menu menOptions
-// --- Caption = "&Options ..."
-// --- End
-// --- End
-// --- Begin VB.Menu menHelp
-// --- Caption = "Help"
-// --- Begin VB.Menu menToolTips
-// --- Caption = "Show &ToolTips"
-// --- End
-// --- Begin VB.Menu menDash1
-// --- Caption = "-"
-// --- End
-// --- Begin VB.Menu menAbout
-// --- Caption = "&About MegaPlex"
-// --- End
-// --- End
-// --- End
-
-// static char *VB_Name = "MainForm";
-// static boolean VB_GlobalNameSpace = False;
-// static boolean VB_Creatable = False;
-// static boolean VB_PredeclaredId = True;
-// static boolean VB_Exposed = False;
-
-// --- Option Explicit
-// --- Option Compare Text
-
-long SetParent(long hWndChild, long hWndNewParent);
-long SetWindowLong(long hWnd, long nIndex, long dwNewLong);
-long GetWindowLong(long hWnd, long nIndex);
-long GetTempPath(long nBufferLength, char *lpBuffer);
-long GetWindowText(long hWnd, char *lpString, long cch);
-
-#define GWL_STYLE ((-16))
-#define WS_CHILD (0x40000000)
-#define WS_POPUP (0x80000000)
-
-// [UNCOMMENTED] Dim StretchWidth2&
-
-char *MpxBmp;
-int OldPointer;
-long OSX, OSY, MDX, MDY;
-int MouseButton;
-
-int PanelSeq;
-
-boolean Loaded, DemosAvailable;
-
-#define nSpeedCount (17)
-int SpeedsByDelayUS[nSpeedCount + 1];
-#define DefaultSpeedIndex (12)
-
-currency LastTick, LastFrame;
-TickCountObject T;
-
-const char *AppTitle = "MegaPlex";
-
-#if 0
-
-static char *GetSpeedDescriptionFPS(currency FrameDelayUS)
-{
- static char *GetSpeedDescriptionFPS;
-
- long FPS;
-
- if (FrameDelayUS == 0)
- {
- GetSpeedDescriptionFPS = "Fastest possible";
- return GetSpeedDescriptionFPS;
- }
-
- if (FrameDelayUS < 0)
- {
- GetSpeedDescriptionFPS = "! display (even faster)";
- return GetSpeedDescriptionFPS;
- }
-
- FPS = 1000000 / FrameDelayUS;
- GetSpeedDescriptionFPS = CAT(INT_TO_STR(FPS), " fps");
- if (35 == FPS)
- GetSpeedDescriptionFPS = CAT(GetSpeedDescriptionFPS, "(Default)");
-
- return GetSpeedDescriptionFPS;
-}
-
-static int InitSpeeds()
-{
- static int InitSpeeds;
-
- SpeedsByDelayUS[1] = -1; // no display
- SpeedsByDelayUS[2] = 0; // fastest possible
- SpeedsByDelayUS[3] = 1000000 / 700; // 700 fps
- SpeedsByDelayUS[4] = 1000000 / 500; // 500 fps
- SpeedsByDelayUS[5] = 1000000 / 350; // 350 fps
- SpeedsByDelayUS[6] = 1000000 / 250; // 250 fps
- SpeedsByDelayUS[7] = 1000000 / 200; // etc.
- SpeedsByDelayUS[8] = 1000000 / 150;
- SpeedsByDelayUS[9] = 1000000 / 100;
- SpeedsByDelayUS[10] = 1000000 / 70;
- SpeedsByDelayUS[11] = 1000000 / 50;
- SpeedsByDelayUS[12] = 1000000 / 35; // default
- SpeedsByDelayUS[13] = 1000000 / 25;
- SpeedsByDelayUS[14] = 1000000 / 20;
- SpeedsByDelayUS[15] = 1000000 / 10;
- SpeedsByDelayUS[16] = 1000000 / 5;
- SpeedsByDelayUS[17] = 1000000 / 1;
-
- return InitSpeeds;
-}
-
-static int GetSpeedIndex(long DelayUS)
-{
- static int GetSpeedIndex;
-
- int i;
- long Diff, MinDiff;
- int MinIdx;
-
- MinIdx = DefaultSpeedIndex;
- MinDiff = 1000000;
- for (i = 1; i <= nSpeedCount; i++)
- {
- Diff = Abs(DelayUS - SpeedsByDelayUS[i]);
- if (Diff < MinDiff)
- {
- MinDiff = Diff;
- MinIdx = i;
- }
- }
-
- GetSpeedIndex = MinIdx;
-
- return GetSpeedIndex;
-}
-
-static long Get_LastOpenFilter()
-{
- static long LastOpenFilter;
-
- SettingsObject s;
-
- LastOpenFilter = s.Read("LastOpenFilter", 1);
-
- return LastOpenFilter;
-}
-
-static void Let_LastOpenFilter(long NewVal)
-{
- SettingsObject s;
-
- SettingsObject_Save("LastOpenFilter", NewVal);
-}
-
-static long Get_LastSaveFilter()
-{
- static long LastSaveFilter;
-
- SettingsObject s;
-
- LastSaveFilter = s.Read("LastSaveFilter", 1);
-
- return LastSaveFilter;
-}
-
-static void Let_LastSaveFilter(long NewVal)
-{
- SettingsObject s;
-
- SettingsObject_Save("LastSaveFilter", NewVal);
-}
-
-#endif
-
-static void CountDown(long HalfSeconds, int bDisplayBar)
-{
-
-#if 0
-
- long i;
- int k;
- long dT, Delta;
- long LeftPos, TopPos, RightPos, MaxWidth; // , MaxHeight&
-
- dT = HalfSeconds * 500;
- Delta = dT / 200;
- LeftPos = cmbFile.left;
- TopPos = cmbFile.top - shpProgress.Height - cmbFile.top / 8;
- RightPos = lblFrameCount.left + lblFrameCount.Width;
- MaxWidth = RightPos - LeftPos;
- // MaxHeight = lblFrameCount.Top - TopPos + lblFrameCount.Height + 4
- if (bDisplayBar)
- {
- shpProgress.Move(LeftPos, TopPos, 0); // , MaxHeight
- shpProgress.Visible = True;
- }
-
- for (i = 1; i <= 200; i++)
- {
- // lblFrameCount = i
- if (bDisplayBar)
- {
- if (i < 101)
- {
- shpProgress.Width = MaxWidth * i / 100;
- }
- else
- {
- k = MaxWidth * (i - 100) / 100;
- shpProgress.Move(k, TopPos, RightPos - k);
- }
- }
-
- T.DelayMS(Delta, False);
- }
-
- shpProgress.Visible = False;
- // lblFrameCount = 0
-
-#endif
-
-}
-
-#if 0
-
-static char *GetValidTempPath()
-{
- static char *GetValidTempPath;
-
- char *TP;
- long nSize, L;
-
- GetValidTempPath = "";
- nSize = 255;
- TP = String(nSize, Chr(32));
- L = GetTempPath(nSize, TP);
- if (nSize < L)
- {
- // buffer was too small, retry with a properly sized buffer:
- nSize = L;
- TP = String(nSize, Chr(32));
- L = GetTempPath(nSize, TP);
- }
-
- TP = SlashLess(left(TP, L));
- if ((0 == L) || (! IsDir(TP)))
- {
- // no valid temp path can be retrieved from the system --> create our own
- TP = CAT(WithSlash(App.Path), "Temp");
- if (! IsDir(TP))
- {
-
- // --- On Error Resume Next
- MkDir(TP);
- if (! IS_NOTHING(&Err, sizeof(Err)))
- {
- MESSAGE_BOX("an error occured"); // MsgBox "cannot create directory for temporary files " & TP, vbCritical, "MegaPlex - Error";
- return GetValidTempPath;
- }
-
- // --- On Error GoTo 0
-
- }
- }
-
- if (IsDir(TP))
- GetValidTempPath = TP;
-
- return GetValidTempPath;
-}
-
-static char *GetMyTempFileName()
-{
- static char *GetMyTempFileName;
-
- char *T;
-
- (char *)T = Hex(hWnd);
- while (Len(T) < 8)
- {
- T = CAT("0", T);
- }
-
- GetMyTempFileName = CAT("tmp0x", CAT((char *)T, ".mpx"));
-
- return GetMyTempFileName;
-}
-
-static long GetHwndFromTempFileName(char *TmpFile)
-{
- static long GetHwndFromTempFileName;
-
- char *FN;
- long LP;
- int L;
- char *NumString;
-
- GetHwndFromTempFileName = 0;
- FN = StripFileName(TmpFile);
- LP = Len("tmp0x");
- L = Len(TmpFile);
- if (LP < L)
- return GetHwndFromTempFileName;
-
- L = L - LP;
- NumString = right(FN, L - LP);
- if (8 < L)
- NumString = left(NumString, 8);
-
- NumString = CAT("&H", NumString);
- GetHwndFromTempFileName = Val(NumString);
-
- return GetHwndFromTempFileName;
-}
-
-static void CleanTempDir(char *TmpDir)
-{
- char *FN, *MFN;
-
- MFN = GetMyTempFileName();
- MayKill(CAT(WithSlash(TmpDir), MFN));
- FN = Dir(CAT(WithSlash(TmpDir), "tmp0x*.mpx"));
- while (FN != "")
- {
- if (STRING_IS_LIKE(FN, "tmp0x*.mpx"))
- {
- if (! InstanceStillRunning(FN))
- MayKill(CAT(WithSlash(TmpDir), FN));
- }
-
- FN = Dir_Without_Args();
- }
-}
-
-static boolean InstanceStillRunning(char *TmpFile)
-{
- static boolean InstanceStillRunning;
-
- long OtherHwnd, nSize, L;
- char *Cap;
-
- InstanceStillRunning = False;
- OtherHwnd = GetHwndFromTempFileName(TmpFile);
- nSize = 255;
- Cap = String(nSize, Chr(32));
- L = GetWindowText(OtherHwnd, Cap, nSize);
- if ((L == 0) || (nSize < L))
- return InstanceStillRunning;
-
- if (STRING_IS_LIKE(Cap, CAT(AppTitle, "*")))
- InstanceStillRunning = True;
-
- return InstanceStillRunning;
-}
-
-#endif
-
-void DisplayLevel()