boolean testhtml1_HtmlEvent(testhtml1* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
char formdata[500]; // Formのデータが入る大きさをとる
char setdata[500]; // Formのデータが入る大きさをとる
char *datapos;
int len,i;
int scr,cur;
// チェック
if ( pMe->pHtml == NULL )
return TRUE;
// フォームのデータ取得
len = IHTMLVIEWER_GetViewState(pMe->pHtml,formdata,499);
formdata[len] = 0;
// IDを取得(ついでに、データとスクロールも)
datapos = testhtml1_DecodeHtmlState(formdata,&scr,&cur);
// IDを、項目番号に変換(次の項目番号までの間にあれば項目とみなす)
pMe->curno = 0;
for(i = 0 ; i < pMe->itemsu ; i ++ )
{
if( pMe->pID[i] == cur )
{
pMe->curno = i;
break;
}
}
// 処理する
switch(eCode)
{
case EVT_KEY: // カーソル移動に関するキーイベント処理
switch(wParam)
{
case AVK_SELECT:
// ほんとうは、ここでやんなくて
// コールバックでやったほうがいいかも知んないけど、
// まあ、ついでにここでしておく
switch(pMe->curno)
{
case 0: // 挑戦する
pMe->phaseNo = 1;
pMe->curno = 1;
cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
testhtml1_DispAppData(pMe);
return TRUE;
case 2: // 打ち終わった
pMe->phaseNo = 2;
pMe->curno = 5;
// ここにチェック処理が入る
// 今回は省略
cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
testhtml1_DispAppData(pMe);
return TRUE;
case 5: // 終了
ISHELL_CloseApplet(pMe->pIShell,FALSE);
return TRUE;
}
break;
case AVK_UP:
pMe->curno = testhtml1_NextCurItem(pMe->curno,-1,pMe->phaseNo);
cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
testhtml1_DispAppData(pMe);
return TRUE;
case AVK_DOWN:
pMe->curno = testhtml1_NextCurItem(pMe->curno,1,pMe->phaseNo);
cur = testhtml1_GetCurPos(pMe->curno,pMe->pID,pMe->pkind);
testhtml1_EncodeHtmlState(setdata,scr,cur,datapos);
IHTMLVIEWER_SetViewState(pMe->pHtml,setdata);
testhtml1_DispAppData(pMe);
return TRUE;
}
}
return FALSE;
}
|