home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
games
/
gi
/
tape.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1993-11-18
|
5KB
|
172 lines
/*--------------------------------------------------------------------------*/
/* */
/* Main-Module : Configurationsmodul zu Tape.c */
/* */
/* Version : V1.00 */
/* */
/* Date : 31.10.93 */
/* */
/* Written : RF / SC */
/* */
/* Revision History :
*/
/*--------------------------------------------------------------------------*/
#define INCL_PM
#include <OS2.H>
#include <DIR.H>
#include <STDLIB.H>
#include <STRING.H>
#include <PMTHREAD.HPP>
#include <CHECKBOX.HPP>
/*---- Globals ----*/
PMWINTHREAD msgloop;
FILEDLG filedlg;
HWND wid[8], title;
char *text[] = { "Tape-Control Status: Stop",
"Tape-Control Status: Record",
"Tape-Control Status: Play" };
/*---- Extern ----*/
extern USHORT modeflag;
extern long event;
extern char filename[];
extern long count;
extern HWND globhwnd;
extern BOOL cfgpresent;
extern unsigned stoponover;
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
void Active (HWND hwnd, unsigned mode)
{
char tmp[10];
WinEnableControl (hwnd, 101, mode);
WinEnableControl (hwnd, 102, mode);
WinEnableControl (hwnd, 105, mode);
WinEnableControl (hwnd, 106, mode);
WinEnableControl (hwnd, 107, mode);
WinSetWindowText (title, text[modeflag]);
itoa (count, tmp, 10);
WinSetWindowText (wid[3], tmp);
}
/*--------------------------------------------------------------------------*/
unsigned GetName (HWND hwnd)
{
HWND hwnddlg;
unsigned error;
char drive[MAXDRIVE], dir[MAXDIR];
filedlg.cbSize = sizeof (FILEDLG);
filedlg.fl = FDS_CENTER | FDS_OPEN_DIALOG;
filedlg.pszTitle = "Choose a file or enter a new name";
if (filename[0])
{
fnsplit (filename, drive, dir, 0, 0);
fnmerge (filename, drive, dir, "*", ".TAP");
strcpy (filedlg.szFullFile, filename);
}
else
strcpy (filedlg.szFullFile, "*.TAP");
hwnddlg = WinFileDlg (HWND_DESKTOP, hwnd, &filedlg);
if (hwnddlg && filedlg.lReturn == DID_OK)
{
strcpy (filename, filedlg.szFullFile);
WinSetWindowText (wid[6], filename);
error = NOERR;
}
else
error = ECANCEL;
return (error);
}
/*--------------------------------------------------------------------------*/
MRESULT EXPENTRY dlgproc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
int i;
char tmp[10];
switch (msg)
{
case WM_INITDLG:
for (i=0; i<8; i++)
wid[i] = WinWindowFromID (hwnd, 101+i);
title = WinWindowFromID (hwnd, FID_TITLEBAR);
globhwnd = hwnd;
cfgpresent = TRUE;
WinSendMsg (hwnd, WM_USER, 0, 0);
WinCheckButton (hwnd, 115, stoponover);
Active (hwnd, 1);
return (FALSE);
case WM_COMMAND:
case WM_CONTROL:
switch (SHORT1FROMMP (mp1))
{
case 101: // Play
count = 0;
modeflag = 2;
event++;
Active (hwnd, 0);
break;
case 102: // Record
//count = 0;
modeflag = 1;
event++;
Active (hwnd, 0);
break;
case 103: // Stop
modeflag = 0;
Active (hwnd, 1);
break;
case 105: // Reset Counter
CheckBoxSet (wid[4], 0);
WinSetWindowText (wid[3], "0");
count = 0;
event++;
break;
case 106: // File...
GetName (hwnd);
break;
case 107:
WinQueryWindowText (wid[6], 256, filename);
break;
case 108: // End
cfgpresent = FALSE;
WinDismissDlg (hwnd, FALSE);
break;
case 115: // Stop on Overplay
stoponover = WinQueryButtonCheckstate (hwnd, 115);
break;
}
break;
case WM_USER:
switch (mp1)
{
case 0: // update counter
itoa (count, tmp, 10);
WinSetWindowText (wid[3], tmp);
break;
case 1: // error in TAPE.DLL -> STOP
modeflag = 0;
Active (hwnd, 1);
break;
}
break;
default:
return (WinDefDlgProc (hwnd, msg, mp1, mp2));
}
return (0L);
}
/*--------------------------------------------------------------------------*/
void main(void)
{
WinDlgBox (HWND_DESKTOP, HWND_DESKTOP, dlgproc, 0, 100, NULL);
}
/*--------------------------------------------------------------------------*/