home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
APP
/
WIN98
/
SOURCEC
/
WIN98.C
next >
Wrap
C/C++ Source or Header
|
2002-01-14
|
3KB
|
163 lines
/*
* Win98 - a fun program
*/
#include <cflib.h>
#include <stdio.h>
#include "win98.h"
#ifndef FALSE
#define FALSE 0
#define TRUE 1
#endif
#ifdef __MTAES__
#define wind_create_grect(a,b) wind_create(a,b)
#define wind_calc_grect(a,b,c,d) wind_calc(a,b,c,d)
#define wind_open_grect(a,b) wind_open(a,b)
#define wind_set_str(a,b,c) wind_set_string(a,b,c)
extern int rc_intersect(GRECT *r1, GRECT *r2);
#endif
/* --------------------------------------------------------------------------- */
OBJECT *objdial;
int quit;
int msg[8], vdi_handle;
int event, msx, msy, mbutton, kstate, mclick, kreturn, win_handle;
int modal = FALSE;
int id = 1, pts = 10;
static void handle_msg(int *msg);
/* --------------------------------------------------------------------------- */
void win_msg(int *msg)
{
if (msg[3] == win_handle)
{
switch (msg[0])
{
case WM_CLOSED :
wind_close(win_handle);
break;
case WM_BOTTOMED:
wind_set(win_handle, WF_BOTTOM, 0, 0, 0, 0);
break;
case WM_NEWTOP:
case WM_TOPPED:
wind_set(win_handle, WF_TOP, 0, 0, 0, 0);
break;
case WM_MOVED:
wind_set(win_handle, WF_CURRXYWH, msg[4], msg[5], msg[6], msg[7]);
break;
case WM_SIZED:
wind_set(win_handle, WF_CURRXYWH, msg[4], msg[5], msg[6], msg[7]);
break;
}
}
}
/* --------------------------------------------------------------------------- */
void win98_dial(void)
{
void *mdial;
int close = FALSE;
int id, exit_obj;
mdial = open_mdial(objdial, 0);
while (!close)
{
exit_obj = do_mdial(mdial);
switch (exit_obj)
{
case 14:
case 12:
do_walert(1, 3, "[0][Unknown system failure #04676A56$46|Aborting registration procedure.][OK]", " Error ");
quit = TRUE;
close = TRUE;
break;
case VALIDATE :
do_walert(1, 3, "[0][Invalid key. Please re-enter.][OK]", " Error ");
break;
}
if (get_flag(objdial, exit_obj, EXIT))
set_state(objdial, exit_obj, SELECTED, FALSE);
if (!close)
redraw_mdobj(mdial, exit_obj);
}
close_mdial(mdial);
}
static void handle_msg(int *msg)
{
if (!message_wdial(msg))
{
}
}
/* --------------------------------------------------------------------------- */
int main(void)
{
OBJECT *tree;
#ifdef __MTAES__
GRECT n = {0,0,0,0};
EVNTDATA ev;
#endif
init_app("win98.rsc");
rsrc_gaddr(R_TREE, INFO, &objdial);
fix_dial(objdial);
/* Callback für modale Fensterdialoge, Fenster-Alerts usw. */
set_mdial_wincb(handle_msg);
quit = FALSE;
win98_dial();
while (!quit)
{
mbutton = 0;
#ifdef __MTAES__
event = evnt_multi(MU_MESAG|MU_BUTTON|MU_KEYBD,
1, 1, 1,
0, &n, 0, &n,
msg, 0, &ev,
&kreturn, &mclick);
msx = ev.x;
msy = ev.y;
mbutton = ev.bstate;
kstate = ev.kstate;
#else
event = evnt_multi(MU_MESAG|MU_BUTTON|MU_KEYBD,
1, 1, 1,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
msg, 0,
&msx, &msy, &mbutton, &kstate,
&kreturn, &mclick);
#endif
if (msg[0]==AP_TERM)
quit = TRUE;
if (event & MU_BUTTON)
{
if (!click_wdial(mclick, msx, msy, kstate, mbutton))
;
}
if (event & MU_KEYBD)
{
if (!key_wdial(kreturn, kstate))
{
}
}
}
wind_close(win_handle);
wind_delete(win_handle);
v_clsvwk(vdi_handle);
exit_app(0);
return 0;
}