#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <egb.h>
#include <guidbg.h>

char	*guiEgbPtr ;			/*	EGB のワークアドレス	*/

int userFunc(apliId, messId, info, data)
int	apliId;
int	messId;
int	info;
int	data;
{
	register int	ret;

	ret = ILLEGAL_FUNCTION;

	switch(messId)
	{
		case	GM_QUIT :
			MMI_SetHaltFlag(TRUE);
			ret = NOERR ;
			break;
	}

	return(ret);
}

void main()
{
	static MMICTRL mmi ={
				SCREEN16,		/* ページ0側解像度		*/
				SCREEN16,		/* ページ1側解像度		*/
				0, 				/* 書き込みページ		*/
				3, 				/* 表示ページ			*/
				0, 				/* 表示プライオリティ	*/
				SCREENAVAILABLE,/* 色数					*/
				SCREENEXPAND, 	/* VRAMの横の長さ		*/
				0, 				/* メモリ領域の大きさ	*/
				NULL, 			/* メモリ領域のアドレス	*/
				0, 				/* ユーザ領域の大きさ	*/
				NULL, 			/* ユーザ領域のアドレス	*/
				0, 0, 			/* 画面枠	lupx,lupy	*/
				0, 0,			/*			rdwx,rdwy	*/
				-16384, -16384,	/* 移動枠	lupx,lupy	*/
				16383, 16383,	/*			rdwx,rdwy	*/
				15, 			/* 白色					*/
				0,  			/* 黒色					*/
				7,  			/* 灰色					*/
				15	 			/* 反転色				*/
	};

	extern int APL_init() ;

	/*	初期化処理	*/
	if (MMI_Open( &mmi ) == NOERR)
	{
		/*	初期化に成功すればメインループに入る.	*/
		if (APL_init() == NOERR)
			MMI_ExecSystem() ;
	}

	/*	終了処理	*/
	MMI_Close() ;

}

int APL_init()
{
	extern MMIINIT	initDataCLISET ;

	register int	ret ;

	/*	EGB ワークアドレスの取得.	*/
	guiEgbPtr = MMI_GetEgbPtr() ;

	/*	ハイパ型部品の初期化			*/
	if ((ret = MMI_initHyper()) < 0)
		return ret ;
	/*	ダイアログ型部品の初期化		*/
	if ((ret = MMI_initDialogL40()) < 0)
		return ret ;
	/*	ウインドウ型部品の初期化		*/
	if ((ret = MMI_initWindowL40()) < 0)
		return ret ;
	/*	メッセージ型部品の初期化		*/
	if ((ret = MMI_initMessageL40()) < 0)
		return ret ;

	/*	背景データの初期化						*/

	/*	データの登録		*/
	if ((ret = MMI_Init(&initDataCLISET)) < 0)
		return ret ;

	/*	背景を表示する							*/
	MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;

	MMI_SendMessage(MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc);
	MMI_CallMessage(MMI_GetApliId(), GM_TITLE, (int)"タイトル", 0);

	return NOERR ;
}

