/****************************************************************************/

#include <stdio.h>
#include <process.h>
#include "defines.h"
#include "aenv.h"

/* 環境変数名 */
#define FHELP	"FHELP"	/* ヘルプ表示プログラム名 */

int	_khelp_=-1; /* ヘルプキー */
static	unchar	*helpprog,help_mes[MAXPATH];
static	unchar	xyparam[MAXPATH+10];

/****************************************************************************/

void key_help(unchar *helpname,int hkey,unchar *xyname)
/* inkey2()/getch2()/getch3()関数 with ヘルプ 初期化 */
/* hkey : スキャンキーコードで与える , 0にするとHELPキーのみになる */
{
unchar *point;
	_khelp_=-1; /* 指定なしの印 */
	point=getenv2(FHELP,NULL);		/* FHELP=helpfile */
	if (point!=NULL) {			/* 環境変数がある時 */
		_khelp_=hkey;			/* help key */
		helpprog=point;			/* help program name */
		strcpy(help_mes,helpname);	/* help message file name */
		/* 座標ファイル名 */
		/*sprintf(xyparam,"/XY\"%s\"",xyname);*/
		strcpy(xyparam,"/XY\"");
		strcat(xyparam,xyname);
		strcat(xyparam,"\"");
	}
}

/****************************************************************************/

int look_help(int flag)
/* return : 0=ヘルプでない , <>0=ヘルプ */
{
int c,msc,xy;
	if (!flag) return(0);
	
	/* マウス表示モード退避 */
	msc=MS_STAT();
	/* マウスカーソル位置退避 */
	xy=MS_CURGT();
	/* カーソルモード保存：呼び出し側で行なわなければならない */
	c=curmode(2);
	
	/* ヘルプ表示プログラム起動 */
	if (spawnlp(P_WAIT,helpprog,helpprog,help_mes,xyparam,NULL)==-1) {
		beep();
		return(errno);
	}
	
	/* カーソルモード復帰 */
	curmode(c);
	/* マウスカーソル復帰 */
	MS_CURST(xy>>16,xy&0xffff);
	if (msc) MS_CURON(); else MS_CUROF();
	
	return(1);
}

/****************************************************************************/
