ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

BREWで複数画面を(分割して開発可能な)開発する場合の方法論(その6:仕様追加-2)

2006-10-02 16:26:04 | ケータイ

 シリーズ「BREWで複数画面を(分割して開発可能な)開発する場合の方法論」で仕様変更(というか1画面追加)というお話をやってます。
 前回、仕様を書きましたから、今回は、方針と、新規画面について書きます。




■方針
 まず、以下の画面に修正・作成が入ります。

・全体画面
  構造体 :共通領域に、ユーザー名追加
  イベント:新規画面(gamen10_HandleEvent)呼び出し

・gamen2
  ・共通領域から、ユーザー名を受け取り表示する

・gamen10
  新規作成

で、これらを作る作業手順について考えます。




■作業手順

 ふつうなら、

・全体画面を修正し、gamen10のダミー画面を作成
・gamen10を作成
・gamen2を修正(gamen10と同時にできる)
・gamen10とgamen2をあわせる

 となるのですが、今回はわけあって(というか、こういうことが多い。こちらのフレームワークにはいれないで、単体で来ることは良くある)、gamen10を単体で作成し、それをあとから、このフレームワークに入れ込むという手順をとることとします。
 つまり、はじめにgamen10を作成します。この作業と、全体およびgamen2作成作業は同時にできます(というか、gamen10作成作業は、何にも邪魔されずにできます)




■新規画面を作成する
 で、gamen10を作成します。

 今回、ヘッダと関数を分けました。ヘッダはgamen10.h、関数はgamen10.cに書きました。
 ソースは下記リンク先を参照。

   gamen10.c
   gamen10.h

 で、ここでヘッダについては、テキストとメニューのコントロールのほかには単に
int curno
 というのが追加されていて、それは、現在の項目の番号
 (テキストのほうにフォーカスが当たってたら0、メニューのほうだったら1)
 というだけなので、説明は省略して、gamen10.cのほうを説明します。




■コントロールを使う場合のカーソル移動など

 で、gamen10.cの関数は、
boolean gamen10_HandleEvent(gamen10* pMe, AEEEvent eCode,uint16 wParam, uint32 dwParam);
boolean gamen10_InitAppData(gamen10* pMe);
void gamen10_FreeAppData(gamen10* pMe);
boolean gamen10_DispAppData(gamen10* pMe);
int gamen10_NextCurItem(gamen10* pMe,int flg);

とあるのですが、このうち、gamen10_InitAppDataは、ご覧のとおり、テキストコントロールとメニューコントロールを生成してるだけだし、gamen10_FreeAppDataは、単純に解放しているだけなので、ここでは、HandleEventとDispAppData、NextCurItemについてとりあげます。

●gamen10_HandleEvent
 上下左右キーが押された場合は、
  pMe->curno = gamen10_NextCurItem(pMe,wParam);
 で、次のカーソルの位置を求め、
  gamen10_DispAppData
 で再描画します

 メニューのコマンド(EVT_COMMAND)について、画面1の表示に関しては、今回のではやっていません(結合時のソース編集で行います)。
 終了する場合は、gamen10_FreeAppDataでメモリ解放したらISHELL_CloseAppletで終了します。

●gamen10_DispAppData
 これで再描画します。このとき、カーソルが移動します。
 方法は、
  コントロールについて
    Redrawします
    カーソルが対象だったら(pMe->curnoが、その項目の番号だったら)
       IsActive(TRUE)して、カーソルをもってきます
       それ以外ならFALSE

  コントロール以外(文字、絵など)
    ここで、書き直した後IDisplay_Updateします。

  こうすると、コントロールもコントロール以外も再描画され、
  pMe->curnoの項目にカーソルがきます。

●gamen10_NextCurItem
 現在のカーソル番号から次のカーソル番号を導き出します。
 といっても、今回の場合、どのキーをおされても0なら1、1なら0なので、
 (2つしかないので)そのように、書いてあります。




 ということで、今回はここまで。
 次回のこのコーナーは、全体部分などの修正です
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 画面ごとに担当者が別れてい... | トップ | JAVAのフォーマット変換... »
最新の画像もっと見る

ケータイ」カテゴリの最新記事