シリーズIHTMLVIEWERの具体的な使い方の番外編(プラスワン)です。
いままで、各画面の初期化(gamen1_InitAppData)するとき、画面項目の種類を入れたり、いろんな関数を呼んで、ちと、面倒な形になっていたので、そこをまとめました。
具体的には
・表示するHTML文から、入力項目の数と種類を取り出す関数をつくって
(IHTMLCTL_GetItemKind)
・データの設定表示部分を、一つにまとめました。
(IHTMLCTL_SetDispData)
それにより、画面の表示部分(gamen1_InitAppData)は、以下のような関数になります。
/*==================================*/ // 関数名:gamen1_InitAppData // // 内容 :領域確保・描画 // /*==================================*/ boolean gamen1_InitAppData(testhtml1* poya) { char *fdata; gamen1 *pMe; //==========================================// // 領域確保 // //==========================================// pMe = (gamen1 *)MALLOC(sizeof(gamen1)); if (pMe == NULL ) { return FALSE; } // アプリ領域へ設定 poya->garea = (void *)pMe; poya->gno = 1; // 初期設定 pMe->phc = NULL; pMe->pIDisplay = poya->pIDisplay; pMe->pIShell = poya->pIShell; //==========================================// // 表示するHTMLファイルの取得 // //==========================================// fdata = IHTMLCTL_GetDispFileData(pMe->pIShell,"gamen1.htm"); if (fdata == NULL ) { return FALSE; } //==========================================// // HTMLViewer生成 // //==========================================// // 読み込んだfdataをHTMLViewerに設定する if ( (pMe->phc = IHTMLCTL_Create(pMe->pIShell,pMe->pIDisplay)) == NULL ) { FREEIF(fdata); return FALSE; } //==========================================// // HTMLViewerデータ設定 // //==========================================// if ( IHTMLCTL_SetDispData(pMe->phc,fdata) != TRUE) { FREEIF(fdata); return FALSE; } //==========================================// // HTMLViewer表示・メモリ解放 // //==========================================// FREEIF(fdata); gamen1_DispAppData(pMe); return TRUE; } |
(上記< > ¥は、本当は半角です)
結果として全部のソースは、こんな感じになります。
・アプリで1つだけ持っていればいいもの testhtml1.c testhtml1.h
・1画面ごとに必要なもの gamen1.c gamen1.h
・IHTMLVIEWER共通関数 IHtmlCtl.c IHtmlCtl.h
以上、ご報告でした!
