/*=========================================================
FILE: $#$CELL D2$#$.c
==========================================================*/
#define _$#$CELL K2$#$_C
#define _$#$CELL K2$#$_C
#include "$#$CELL D2$#$.h"
/*==================================*/
// 関数名:$#$CELL D2$#$_HandleEvent //
// 内容 :イベント処理 //
/*==================================*/
boolean $#$CELL D2$#$_HandleEvent($#$CELL B2$#$* poya,
AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
$#$CELL D2$#$ *pMe;
// チェック
if ( poya == NULL )
return FALSE;
if ( ( poya->gno != 1 )||
( poya->garea == NULL ))
return FALSE;
pMe = ($#$CELL D2$#$ *)poya->garea;
// 項目NULLチェック
$#$REP 5$#$
if ( pMe->$#$KETA B$#$ == NULL )
return FALSE;
$#$REPEND A$#$
$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
// フォームのデータ取得
IHTMLCTL_HandleEvent(pMe->$#$KETA B$#$,eCode,wParam,dwParam);
if ( pMe->$#$KETA B$#$->text_flg != 0 )
{
return TRUE;
}
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$
// テキストエリア
if ( ITEXTCTL_HandleEvent(pMe->$#$KETA B$#$,eCode,wParam,dwParam) == TRUE )
{
return TRUE;
}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$
// メニュー
if ( IMENUCTL_HandleEvent(pMe->$#$KETA B$#$,eCode,wParam,dwParam) == TRUE )
{
return TRUE;
}
$#$IFEND$#$
$#$REPEND A$#$
// 処理する
switch(eCode)
{
case EVT_KEY: // カーソル移動に関するキーイベント処理
switch(wParam)
{
case AVK_SELECT:
// 選択キーが押されたときの
// 処理を書く
break;
case AVK_UP:
// UPキーが押されたときの
// 処理を書く(たいてい、以下のとおり)
pMe->curno = $#$CELL D2$#$_NextCurItem(pMe,AVK_UP);
$#$CELL D2$#$_DispAppData(pMe);
return TRUE;
case AVK_DOWN:
// Downキーが押されたときの
// 処理を書く(たいてい、以下のとおり)
pMe->curno = $#$CELL D2$#$_NextCurItem(pMe,AVK_DOWN);
$#$CELL D2$#$_DispAppData(pMe);
return TRUE;
}
}
return FALSE;
}
/*==================================*/
//関数名:$#$CELL D2$#$_InitAppData //
//内容 :領域確保・描画 //
/*==================================*/
boolean $#$CELL D2$#$_InitAppData($#$CELL B2$#$* poya)
{
char *fdata;
$#$CELL D2$#$ *pMe;
AEERect rect;
AECHAR *menubuf;
char *menuTitle;
//==========================================//
// 領域確保 //
//==========================================//
pMe = ($#$CELL D2$#$ *)MALLOC(sizeof($#$CELL D2$#$));
if (pMe == NULL )
{
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
// アプリ領域へ設定
poya->garea = (void *)pMe;
poya->gno = $#$CELL H2$#$;
// 初期設定
$#$REP 5$#$
pMe->$#$KETA B$#$ = NULL;
$#$REPEND A$#$
pMe->pIDisplay = poya->pIDisplay;
pMe->pIShell = poya->pIShell;
$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
//==========================================//
// 表示するHTMLファイルの取得 //
//==========================================//
fdata = IHTMLCTL_GetDispFileData(pMe->pIShell,"$#$KETA H$#$");
if (fdata == NULL )
{
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
//==========================================//
// HTMLViewer生成 //
//==========================================//
// 読み込んだfdataをHTMLViewerに設定する
if ( (pMe->$#$KETA B$#$
= IHTMLCTL_Create(pMe->pIShell,pMe->pIDisplay))
== NULL )
{
FREEIF(fdata);
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
//==========================================//
// HTMLViewerデータ設定 //
//==========================================//
if ( IHTMLCTL_SetDispData(pMe->$#$KETA B$#$,fdata)
!= TRUE)
{
FREEIF(fdata);
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
//==========================================//
// 追加:HTMLViewer大きさ設定 //
//==========================================//
rect.x = $#$KETA D$#$;
rect.y = $#$KETA E$#$;
rect.dx = $#$KETA F$#$;
rect.dy = $#$KETA G$#$;
IHTMLCTL_SetRect(pMe->$#$KETA B$#$,&rect);
//==========================================//
// HTMLViewer表示・メモリ解放 //
//==========================================//
FREEIF(fdata);
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$
//==========================================//
// テキストエリア設定 //
//==========================================//
if ( ISHELL_CreateInstance( pMe->pIShell,
AEECLSID_TEXTCTL, (void**)&pMe->$#$KETA B$#$ ) != SUCCESS )
{
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
rect.x = $#$KETA D$#$;
rect.y = $#$KETA E$#$;
rect.dx = $#$KETA F$#$;
rect.dy = $#$KETA G$#$;
ITEXTCTL_SetRect(pMe->$#$KETA B$#$,&rect);
ITEXTCTL_SetProperties(pMe->$#$KETA B$#$,TP_FRAME|TP_MULTILINE);
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$
//==========================================//
// メニュー設定 //
//==========================================//
if ( ISHELL_CreateInstance( pMe->pIShell,
AEECLSID_MENUCTL, (void**)&pMe->$#$KETA B$#$ ) != SUCCESS )
{
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
rect.x = $#$KETA D$#$;
rect.y = $#$KETA E$#$;
rect.dx = $#$KETA F$#$;
rect.dy = $#$KETA G$#$;
IMENUCTL_SetRect(pMe->$#$KETA B$#$,&rect);
$#$IFEND$#$
$#$REPEND A$#$
$#$IFCELL O3,メニュー一覧$#$
//==========================//
// メニュー項目の表示 //
//==========================//
$#$IFEND$#$
$#$REP 5$#$
$#$IFCELL O3,メニュー一覧$#$
menuTitle = "$#$KETA R$#$";
menubuf = (AECHAR *)MALLOC((STRLEN(menuTitle)+1)*sizeof(AECHAR));
if ( menubuf == NULL )
{
$#$CELL D2$#$_FreeAppData(poya);
return FALSE;
}
MEMSET(menubuf,0,(STRLEN(menuTitle)+1)*sizeof(AECHAR));
STREXPAND(menuTitle,STRLEN(menuTitle),menubuf,
(STRLEN(menuTitle)+1)*sizeof(AECHAR));
IMENUCTL_AddItem(pMe->$#$KETA P$#$,NULL,NULL,$#$KETA Q$#$,menubuf,NULL);
FREEIF(menubuf);
$#$IFEND$#$
$#$REPEND O$#$
$#$CELL D2$#$_DispAppData(pMe);
// 共通領域を設定
pMe->pMap = poya->pMap;
return TRUE;
}
/*==================================*/
// 関数名:$#$CELL D2$#$_FreeAppData //
// 内容 :領域のフリー //
/*==================================*/
void $#$CELL D2$#$_FreeAppData($#$CELL B2$#$* poya)
{
$#$CELL D2$#$ *pMe;
// 対象かどうかチェック
if ( poya->gno != 1 )
return;
if ( poya->garea == NULL )
return;
pMe = ($#$CELL D2$#$ *)poya->garea;
$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
// フリー
if ( pMe->$#$KETA B$#$ != NULL )
{
IHTMLCTL_Release(pMe->$#$KETA B$#$);
pMe->$#$KETA B$#$ = NULL;
}
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$
// テキストフリー
if ( pMe->$#$KETA B$#$ != NULL )
{
ITEXTCTL_Release(pMe->$#$KETA B$#$);
pMe->$#$KETA B$#$ = NULL;
}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$
// メニューフリー
if ( pMe->$#$KETA B$#$ != NULL )
{
IMENUCTL_Release(pMe->$#$KETA B$#$);
pMe->$#$KETA B$#$ = NULL;
}
$#$IFEND$#$
$#$REPEND A$#$
FREEIF(pMe);
// 親のエリアをクリア
poya->garea = NULL;
}
/*==================================*/
// 関数名:$#$CELL D2$#$_DispAppData //
// 内容 :画面の初期表示 //
/*==================================*/
boolean $#$CELL D2$#$_DispAppData($#$CELL D2$#$* pMe)
{
int curpos,buhinpos;
// 初期化
curpos = 0;
buhinpos = 0;
//==================================//
// リドローする //
//==================================//
// ここに、
// 1.リドローと、
// 2.次のフォーカス指示を書く
$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
if ( pMe->$#$KETA B$#$ != NULL )
{
// リドロー
IHTMLCTL_Redraw(pMe->$#$KETA B$#$);
// カーソル番号pMe->curnoを、htmlの項目順に数えた番号に変換する。
// その番号をcurposとすると
IHTMLCTL_DispData(pMe->$#$KETA B$#$,curpos,pMe->$#$KETA B$#$->scr);
// カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
// 変換する。その番号をbuhinposだとすると
if(buhinpos == $#$KETA A$#$)
IHTMLCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
else
IHTMLCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
}
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$
// テキストエリアのRedrawやUpdateする
if ( pMe->$#$KETA B$#$ != NULL )
{
// リドロー
ITEXTCTL_Redraw(pMe->$#$KETA B$#$);
// カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
// 変換する。その番号をbuhinposだとすると
if(buhinpos == $#$KETA A$#$)
ITEXTCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
else
ITEXTCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$
// メニューのRedrawやUpdateする
if ( pMe->$#$KETA B$#$ != NULL )
{
// リドロー
IMENUCTL_Redraw(pMe->$#$KETA B$#$);
// カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
// 変換する。その番号をbuhinposだとすると
if(buhinpos == $#$KETA A$#$)
IMENUCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
else
IMENUCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
}
$#$IFEND$#$
$#$REPEND A$#$
return TRUE;
}
//=================================*//
//関数名:$#$CELL D2$#$_NextCurItem //
//内容 :カーソル移動先を求める //
//=================================*//
int $#$CELL D2$#$_NextCurItem($#$CELL D2$#$* pMe,int flg)
{
//======================================//
// 次のカーソル移動箇所に //
// ついて、 //
// プログラムを書いてください //
//======================================//
return 0; // 該当なし
}
|