📄 zdemoa.c
字号:
/*****************************************************************************/
/* DEMO PROGRAM FOR ZLIB VERSION 1.0 */
/* ------------------------------------------------------------------------- */
/* Author : Shih Ho ( 何 轼 ) */
/* Date : August 14, 1995 */
/*****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <zlib.h>
/*#include <applib.h>*/
/*===========================================================================*/
/* Constant Definition */
/*---------------------------------------------------------------------------*/
/*===========================================================================*/
/* Function Definition */
/*---------------------------------------------------------------------------*/
/*===========================================================================*/
/* Data Area */
/*---------------------------------------------------------------------------*/
static double dVar;
static long lVar;
static int iVar;
static char cVar;
static char sVar[9];
static ZWINDOW Window = {
1, 2, 22, 30, ZW_BOX, " 填写请假单 "
};
static ZMTERM mTerm[] = {
{ "0.发烧", ZM_HOTKEY | ZM_EXIT, 0 },
{ "1.生病", ZM_HOTKEY | ZM_EXIT, 0 },
{ "2.家事", ZM_HOTKEY | ZM_EXIT, 0 },
{ "3.带孩子打针", ZM_HOTKEY | ZM_EXIT, 0 },
{ "4.义务执勤", ZM_HOTKEY | ZM_EXIT, 0 },
{ "5.探亲", ZM_HOTKEY | ZM_EXIT, 0 },
{ "6.婚嫁", ZM_HOTKEY | ZM_EXIT, 0 },
{ "7.丧事", ZM_HOTKEY | ZM_EXIT, 0 },
{ "8.搬家", ZM_HOTKEY | ZM_EXIT, 0 },
{ "9.计生手术", ZM_HOTKEY | ZM_EXIT, 0 }
};
static ZMENU mMenu = {
4, 11, ZW_BOX, "事由选择", sizeof( mTerm ) / sizeof( ZMTERM ), 1, mTerm
};
/*===========================================================================*/
/* Local Function - Convert cVar */
/*---------------------------------------------------------------------------*/
static void ConvertCode()
{
if( cVar < '0' || cVar > '9' )
ZWprintf( 1, 10, "%12s", "" );
else
ZWprintf( 1, 10, "[%-10s]", mTerm[cVar - '0'].d + 2 );
}
/*===========================================================================*/
/* Local Function - Display Value */
/*---------------------------------------------------------------------------*/
static void DispValue( int n )
{
int a = ZWattr( ZA_KEY );
switch( n ){
case 0:
if( cVar == '0' )
ZWprintf( 13, 17, "发烧%4.1lf℃", dVar );
else if( cVar == '1' )
ZWprintf( 13, 17, "患%-8s", sVar );
else if( cVar >= '2' && cVar <= '9' )
ZWprintf( 13, 17, "%-10s", mTerm[cVar - '0'].d + 2 );
break;
case 1:
if( cVar == '0' )
ZWprintf( 13, 17, "发烧%4.1lf℃", dVar );
break;
case 2:
if( cVar == '1' )
ZWprintf( 13, 17, "患%-8s", sVar );
break;
case 3:
/*
DispDate( 16, 5, -1, lVar );
*/
break;
case 4:
ZWprintf( 19, 2, "%d", iVar );
break;
}
ZWattr( a );
}
/*===========================================================================*/
/* Local Function - Display Screen */
/*---------------------------------------------------------------------------*/
static void DispScreen()
{
ZWprintf( 1, 2, "事由:" );
ZWprintf( 3, 2, "度数:" );
ZWprintf( 5, 2, "病种:" );
ZWprintf( 7, 2, "日期:" );
ZWprintf( 9, 2, "天数:" );
ZWprintf( 11, 0, "───────────────" );
ZWprintf( 13, 8, "本 人 因" );
ZWprintf( 14, 17, "─────" );
ZWprintf( 16, 2, "自%16s起 休 假", "" );
ZWprintf( 17, 5, "───────" );
ZWprintf( 19, 5, "天 盼 准" );
ZWprintf( 20, 2, "─" );
}
/*===========================================================================*/
/* Local Function - Before Function For Edit */
/*---------------------------------------------------------------------------*/
static int Editable( int n )
{
switch( n ){
case 1:
if( cVar == '0' )
return( 0 );
break;
case 2:
if( cVar == '1' )
return( 0 );
break;
}
return( -1 );
}
/*===========================================================================*/
/* Local Function - After Function For Edit */
/*---------------------------------------------------------------------------*/
static int CheckVar( int Key, int n )
{
int r;
if( Key == ESC )
return( 0 );
switch( n ){
case 0:
if( cVar < '0' || cVar > '9' ){
if( ( r = Zmenu( &mMenu ) ) < 0 ){
Zerror( 4, 11, "合法值为 0 - 9!" );
return( -1 );
}
cVar = r + '0';
}
ConvertCode();
break;
case 1:
if( dVar < 37 || dVar > 43 ){
Zackmsg( 6, 11, 0, "您是不是烧糊涂了?" );
return( -1 );
}
break;
case 2:
if( strlen( sVar ) == 0 ){
Zackmsg( 8, 11, 0, "有什么\"难言之隐\"不可讲清楚的?" );
return( -1 );
}
break;
case 3:
/*
if( DateCheck( lVar, 10, 11 ) < 0 )
*/
return( -1 );
break;
case 4:
if( iVar < 1 || iVar > 30 ){
Zerror( 12, 11, "一次请假天数为 1 - 30 天!" );
return( -1 );
}
break;
}
DispValue( n );
return( 0 );
}
/*===========================================================================*/
/* Local Function - Edit Data */
/*---------------------------------------------------------------------------*/
static void EditData()
{
ZBUTTON Button[] = {
{ 20, 20, 1, 8, "Esc 退出", ESC, 0, 0 }
};
ZFIELD Field[] = {
{ 1, 8, 'C', 1, 0, "N", &cVar, 0, CheckVar },
{ 3, 8, 'D', 6, 1, "99.0℃", &dVar, Editable, CheckVar },
{ 5, 8, 'S', 8, 0, 0, sVar, Editable, CheckVar },
{ 7, 8, 'L', 14, 0, "0000年00月00日", &lVar, 0, CheckVar },
{ 9, 8, 'I', 5, 0, 0, &iVar, 0, CheckVar }
};
ZSCREEN Screen = {
sizeof( Button ) / sizeof( ZBUTTON ), Button,
sizeof( Field ) / sizeof( ZFIELD ), Field, 0
};
int i;
cVar = ' ';
dVar = 0;
strcpy( sVar, "" );
/*
lVar = GetDate();
*/
iVar = 1;
ConvertCode();
for( i = 0; i < sizeof( Field ) / sizeof( ZFIELD ); i ++ )
DispValue( i );
if( Zscreen( &Screen ) == 0 )
Zwarning( 10, 31, "数据编辑失败!" );
}
/*===========================================================================*/
/* Main Program */
/*---------------------------------------------------------------------------*/
void main()
{
if( Zinit() != 0 )
printf( "Failed on initialize environment!\n" );
else{
if( ZWopen( &Window ) == 0 ){
DispScreen();
EditData();
ZWclose();
}
Zexit();
}
}
/*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -