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

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

BREWでiアプリ統合作成ツールのための、1イベント1関数化(その4:階層化その1)

2006-12-06 18:26:33 | ケータイ

 シリーズBREWでiアプリ統合作成ツールのための、1イベント1関数化のつづきです。
 前回は、1イベント1関数で、1つのクラス(ファイル)に、複数イベント関数を書けるケースについてやりました。

 今回は、そのイベント処理を階層化することについて、考えます。




■BREWアプリにおける階層とは
 「階層的にイベントを処理する」ことを考える前に、まず、
階層について、考えます。そうすると、こんな感じになると思います

 アプリ
  |
 画 面
  |
コントロール

1つのアプリに複数の画面があって、複数のコントロールがあるという
イメージです。




■階層的にイベントを発生させるには

 ということは、階層的にするには、

1.まず、アプリのイベント処理で、各画面のイベント処理をしてから、
  それで処理し切れなかったら、アプリのイベント処理をします。

 つまり、イメージ的に書くとこんなかんじ
アプリ_HandleEvent
{
  for(i = 0 ; i < 画面数 ; i ++ )
  {      if ( 画面_HandleEvent() == true )          return true;    }        return アプリ自身のハンドル処理 }


2.各画面のハンドル処理では、各コントロールのイベント処理をしてから、
  それで処理し切れなかったら、各画面自身のイベント処理をします。
 つまり、イメージ的に書くとこんなかんじ
画面_HandleEvent
{
  for(i = 0 ; i < コントロール数 ; i ++ )
  {      if ( コントロール_HandleEvent() == true )          return true;    }        return 画面自身のハンドル処理 }





■まず、1.アプリのイベント処理を考える

 このうち、アプリのイベント処理を考えます。

 ここで、まじめに、上記のようにイベント処理をするとすると、
●1.initAppDataで、

・画面用のイベント処理関数の登録と
//画面番号10番の場合
IEVENTLIST_Add(pMe->pElist,pMe,IEVENTLIST_KIND_GAMEN,10,
          0,0,gamen10_HandleEvent);

・アプリののイベント処理関数の登録
IEVENTLIST_Add(pMe->pElist,pMe,IEVENTLIST_KIND_ECODE,EVT_APP_START,
   0,0,event1_STARTEvent);
をして


●アプリのHandleEventで、画面用の処理をして、
static boolean event1_HandleEvent(event1* pMe, AEEEvent eCode, 
   uint16 wParam, uint32 dwParam)
{
	if ( pMe	==	NULL )
		return	FALSE;

	if ( pMe->pElist	==	NULL )
		return	FALSE;

        //画面用イベント処理
        if ( IEVENTLIST_DispHandleEvent(pMe->pElist,pMe->gno,
            eCode,wParam,dwParam) == true )
        return TRUE;

	return	IEVENTLIST_HandleEvent(pMe->pElist,eCode,wParam,dwParam);
}
 

●アプリのFreeAppDataで解放すれば
void event1_FreeAppData(event1* pMe)
{
   IEVENTLIST_Release(pMe->pElist);
}

できることはできるのですが。。。




以下、次回のこのシリーズに続く

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 「FON」が日本で本格稼働、Sk... | トップ | スノーカードと要求仕様 »
最新の画像もっと見る

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