(57)【要約】【構成】表示制御テーブルは、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］とその各々に属するメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］とを備える。ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］は、表示処理を施される複数の大項目をそれぞれ管理する。また、メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々は、表示処理を施される複数の小項目を管理する。メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々には、他のＧＵＩテーブルの下で管理される小項目との依存関係を示すツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］が割り当てられる。所望の小項目が選択されると、このツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］に基づいて、所望の小項目に依存する複数の小項目に表示処理が施される。【効果】ディジタルカメラは、異なるメニュー画像を共通の手順で画面に表示することができる。【選択図】  図１６
2004264883.tif 000002
【特許請求の範囲】
【請求項１】
メニュー画像を表示する表示装置のプロセサによって読み取られるメニュー表示制御データのデータ構造において、
前記プロセサによって表示処理を施される複数の大項目をそれぞれ管理する複数の第１管理テーブル、および
前記複数の第１管理テーブルの各々に属するかつ各自が前記プロセサによって表示処理を施される複数の小項目を管理する複数の第２管理テーブルを備え、
注目する第２管理テーブルが属する第１管理テーブルと異なる第１管理テーブルの下で管理される小項目に依存していることを示す依存関係情報を前記注目する第２管理テーブルに割り当て、所望の小項目が選択されたときに前記プロセサが前記依存関係情報に基づいて前記所望の小項目に依存する複数の小項目を表示できるようにしたことを特徴とする、データ構造。
【請求項２】
前記所望の小項目を管理する第１管理テーブルに前記所望の小項目を示す所望小項目情報を割り当て、前記プロセサが前記所望小項目情報に基づいて前記所望の小項目に対応する大項目の代わりに前記所望の小項目を表示できるようにした、請求項１記載のデータ構造。
【請求項３】
前記所望の小項目の選択が解除されたとき前記所望小項目情報を小項目未選択情報に切り換え、前記プロセサが前記小項目未選択情報に基づいて前記所望の小項目の代わりに前記所望の小項目に対応する大項目を表示できるようにした、請求項２記載のデータ構造。
【請求項４】
前記所望の小項目が選択されていない第２管理テーブルの小項目に依存する第２管理テーブルが属する第１管理テーブルに選択不可情報を割り当て、前記プロセサが、前記選択不可情報が割り当てられた第１管理テーブルが管理する大項目の表示を中止できるようにした、請求項１ないし３のいずれかに記載のデータ構造。
【請求項５】
前記複数の第１管理テーブルの各々に属する複数の第２管理テーブルは連続し、前記複数の第１管理テーブルの各々には前記複数の第２管理テーブルの先頭位置情報とテーブル数情報とが割り当てられる、請求項１ないし４のいずれかに記載のデータ構造。
【請求項６】
前記依存関係情報は複数の小項目との依存関係を示しうる、請求項１ないし５のいずれかに記載のデータ構造。
【請求項７】
請求項１ないし６のいずれかに記載のメニュー表示制御データを格納するデータファイル。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、メニュー表示制御データのデータ構造に関し、特にたとえばメニュー画像を表示する表示装置のプロセサによって読み取られる、メニュー表示制御データのデータ構造に関する。
【０００２】
【従来技術】
この種の表示装置では、メニュー表示制御データおよびこれに適合する制御プログラムは、製造段階において内蔵メモリに書き込まれる。このため、使用段階でメニュー表示制御データのみを変更すると、制御プログラムは変更されたメニュー表示制御データを適切に処理できず、メニュー表示に不具合が生じる。かかる理由から、従来は、使用段階でメニュー画像を変更することはできなかった。
【０００３】
【発明が解決しようとする課題】
しかし、表示装置の使用状況の変化に対応してメニュー画像を変更できなければ、表示装置の汎用性に欠け、コストの面で問題が生じる。たとえば、撮影現場の詳細情報をメニュー操作によって入力できるディジタルカメラを想定した場合、被写界が楽器の製作現場であるときと家屋の建築現場であるときとで、入力すべき詳細情報が異なる。かかる場合にメニュー画像が固定であると、撮影現場毎に専用のディジタルカメラを準備しなければならず、コストがかかってしまう。
【０００４】
それゆえに、この発明の主たる目的は、異なるメニュー画像を表示装置に表示させることができる、メニュー表示制御データのデータ構造を提供することである。
【０００５】
【課題を解決するための手段】
この発明によれば、メニュー画像を表示する表示装置のプロセサによって読み取られるメニュー表示制御データのデータ構造は、プロセサによって表示処理を施される複数の大項目をそれぞれ管理する複数の第１管理テーブル、および複数の第１管理テーブルの各々に属するかつ各自がプロセサによって表示処理を施される複数の小項目を管理する複数の第２管理テーブルを備え、注目する第２管理テーブルが属する第１管理テーブルと異なる第１管理テーブルの下で管理される小項目との依存関係を示す依存関係情報を注目する第２管理テーブルに割り当て、所望の小項目が選択されたときにプロセサが依存関係情報に基づいて所望の小項目に依存する複数の小項目を表示できるようにしたことを特徴とする。
【０００６】
【作用】
表示装置のプロセサによって読み取られるメニュー表示制御データは、複数の第１管理テーブルとその各々に属する複数の第２管理テーブルとを備える。複数の第１管理テーブルは、プロセサによって表示処理を施される複数の大項目をそれぞれ管理する。また、各々の第２管理テーブルは、プロセサによって表示処理を施される複数の小項目を管理する。
【０００７】
注目する第２管理テーブルには、当該第２管理テーブルが属する第１管理テーブルと異なる第１管理テーブルの下で管理される小項目との依存関係を示す依存関係情報が割り当てられる。所望の小項目が選択されると、プロセサは、この依存関係情報に基づいて、所望の小項目に依存する複数の小項目を表示する。
【０００８】
このように、依存関係情報が第２管理テーブルに割り当てられるため、プロセサは、この依存関係情報を読み取ることで小項目を的確に画面に表示することができる。つまり、表示装置は異なるメニュー画像を共通の手順で画面に表示することができる。
【０００９】
好ましくは、所望の小項目を示す所望小項目情報が、所望の小項目を管理する第１管理テーブルに割り当てられる。プロセサは、かかる所望小項目情報に基づいて、所望の小項目に対応する大項目の代わりに所望の小項目を表示する。これによって、いずれの小項目が選択されたかを容易に把握することができ、操作性が向上する。
【００１０】
さらに好ましくは、所望の小項目の選択が解除されたとき、所望小項目情報が小項目未選択情報に切り換えられる。プロセサは、小項目未選択情報に基づいて、所望の小項目の代わりに所望の小項目に対応する大項目を表示する。
【００１１】
好ましくは、所望の小項目が選択されていない第２管理テーブルの小項目に依存する第２管理テーブルが属する第１管理テーブルに選択不可情報が割り当てられる。プロセサは、選択不可情報が割り当てられた第１管理テーブルが管理する大項目の表示を中止する。これによって、未選択の小項目に関連する大項目の表示が中止され、操作性が向上する。
【００１２】
好ましくは、依存関係情報は複数の小項目との依存関係を示しうる。この場合、第２管理テーブルの数が減少され、データサイズの抑制が可能となる。
【００１３】
好ましくは、複数の第１管理テーブルの各々に属する複数の第２管理テーブルは連続する。このとき、複数の第１管理テーブルの各々には、複数の第２管理テーブルの先頭位置情報とテーブル数情報とが割り当てられる。これによって、第２管理テーブル毎にアドレス情報を割り当てる必要がなくなり、データサイズの抑制が可能となる。
【００１４】
【発明の効果】
この発明によれば、依存関係情報が第２管理テーブルに割り当てられるため、プロセサは、この依存関係情報を読み取ることで小項目を的確に画面に表示することができる。つまり、表示装置は異なるメニュー画像を共通の手順で画面に表示することができる。
【００１５】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１６】
【実施例】
図１を参照して、この実施例のディジタルカメラ１０は、主に楽器の製作現場を撮影するために用いられるカメラであり、イメージセンサ１２を含む。被写界つまり製作現場の光学像は、光学レンズ（図示せず）を介してイメージセンサ１２の受光面に入射する。受光面には複数の受光素子（図示せず）が配置され、かかる受光素子の光電変換によって、被写界の光学像に対応する生画像信号（電荷）が生成される。
【００１７】
シャッタキー４６が操作されると、撮影処理が実行される。まず、ＣＰＵ４４が、ＴＧ（Ｔｉｍｉｎｇ  Ｇｅｎｅｒａｔｏｒ）１４に読み出し命令を与え、信号処理回路１８に処理命令を与え、そしてＪＰＥＧコーデック２４に圧縮命令を与える。ＴＧ１４は、受光素子で生成された生画像信号を読み出すべく、タイミング信号をイメージセンサ１２に与える。生画像信号は、ラスタスキャン方式でイメージセンサ１２から読み出され、ＣＤＳ／ＡＧＣ／ＡＤ回路１６でノイズ除去，ゲイン調整およびＡ／Ｄ変換の一連の処理を施される。ＣＤＳ／ＡＧＣ／ＡＤ回路１６から出力された生画像データは、信号処理回路１８によって色分離，白バランス調整，ＹＵＶ変換などの信号処理を施される。これによって生成されたＹＵＶデータは、メモリコントローラ２０によってＳＤＲＡＭ２２に書き込まれる。
【００１８】
ＪＰＥＧコーデック２４は、メモリコントローラ２０を通してＳＤＲＡＭ２２からＹＵＶデータを読み出し、読み出されたＹＵＶデータにＪＰＥＧ圧縮を施す。これによって生成された圧縮ＹＵＶデータつまりＪＰＥＧデータもまた、メモリコントローラ２０によってＳＤＲＡＭ２２に書き込まれる。
【００１９】
ＣＰＵ４４は、自らファイルヘッダを作成し、ＳＤＲＡＭ２２に格納されたＪＰＥＧデータをメモリコントローラ２０を通して読み出し、ファイルヘッダとＪＰＥＧデータとを含む画像ファイルをＩ／Ｆ３４に与える。メモリカード３８がスロット３６に装着されている場合、画像ファイルは、Ｉ／Ｆ３４によってメモリカード３８に記録される。通信カード４０がスロット３６に装着されている場合、画像ファイルは、Ｉ／Ｆ３４から通信カード４０に与えられ、通信カード４０によって遠隔地のサーバ（図示せず）に送信される。
【００２０】
後述する表示制御テーブルおよび文字列データが有効である場合、メニューキー４６およびセットキー５０の操作に応答して、図２〜図４に示す構造を有するメニューがＬＣＤ３０に表示される。具体的には、ＣＰＵ４４からの命令に従って、キャラクタジェネレータ３２から所望のキャラクタデータが出力される。出力されたキャラクタデータはミキサ２８を介してＬＣＤ３０に与えられ、これによってメニューが表示される。なお、メニュー構造を形成する各要素の名称を図５に示す。また、キー操作に応じた表示メニューの遷移を図６〜図１４（Ｂ）に示す。かかる表示メニューを操作することで、楽器の製作現場を特定するための詳細情報の入力が可能となる。
【００２１】
図２〜図４を参照して、メニュー構造は、“音楽ジャンル”，“楽器分類”，“楽器名”，“材質”，“材料”および“表面処理”の６つの大項目に分類される。この６つの大項目には、“０”〜“５”の大項目番号が割り当てられる。
【００２２】
“音楽ジャンル”は、“クラシック”，“ジャズ”および“その他”の小項目に分類される。いずれの小項目も、枝メニュー“０”に属する。“クラシック”には小項目番号“０”が割り当てられ、“ジャズ”には小項目番号“１”が割り当てられ、そして“その他”には小項目番号“２”が割り当てられる。
【００２３】
“楽器分類”は、“弦楽器”，“木管楽器”，“金管楽器”，“打楽器”および“鍵盤楽器”の小項目に分類される。これらの小項目も、全て枝メニュー“０”に属する。“弦楽器”には小項目番号“０”が割り当てられ、“木管楽器”には小項目番号“１”が割り当てられ、“金管楽器”には小項目番号“２”が割り当てられ、“打楽器”には小項目番号“３”が割り当てられ、そして“鍵盤楽器”には小項目番号“４”が割り当てられる。
【００２４】
“楽器名”は、“バイオリン”，“ビオラ”，“チェロ”，“コントラバス”，“オーボエ”，“フルート”，“クラリネット”，“ファゴット”，“サクソフォン”，“ホルン”，“トランペット”，“トロンボーン”，“ユーフォニアム”，“チューバ”，“ティンパニ”，“スネアドラム”，“バスドラム”，“ピアノ”，“チェレスタ”および“オルガン”の小項目に分類される。
【００２５】
このうち、“バイオリン”，“ビオラ”，“チェロ”および“コントラバス”は枝メニュー“０”に属し、“オーボエ”，“フルート”，“クラリネット”，“ファゴット”および“サクソフォン”は枝メニュー“１”に属する。また、“ホルン”，“トランペット”，“トロンボーン”，“ユーフォニアム”および“チューバ”は枝メニュー“２”に属し、“ティンパニ”，“スネアドラム”および“バスドラム”は枝メニュー“３”に属し、“ピアノ”，“チェレスタ”および“オルガン”は枝メニュー“４”に属する。
【００２６】
“バイオリン”には小項目番号“０”が割り当てられ、“ビオラ”には小項目番号“１”が割り当てられ、“チェロ”には小項目番号“２”が割り当てられ、そして“コントラバス”には小項目番号“３”が割り当てられる。“オーボエ”には小項目番号“０”が割り当てられ、“フルート”には小項目番号“１”が割り当てられ、“クラリネット”には小項目番号“２”が割り当てられ、“ファゴット”には小項目番号“３”が割り当てられ、そして“サクソフォン”には小項目番号“４”が割り当てられる。
【００２７】
“ホルン”には小項目番号“０”が割り当てられ、“トランペット”には小項目番号“１”が割り当てられ、“トロンボーン”には小項目番号“２”が割り当てられ、“ユーフォニアム”には小項目番号“３”が割り当てられ、“チューバ”には小項目番号“４”が割り当てられる。“ティンパニ”には小項目番号“０”が割り当てられ、“スネアドラム”には小項目番号“１”が割り当てられ、“バスドラム”には小項目番号“２”が割り当てられる。“ピアノ”には小項目番号“０”が割り当てられ、“チェレスタ”には小項目番号“１”が割り当てられ、“オルガン”には小項目番号“２”が割り当てられる。
【００２８】
“材質”は、“木材”，“金属”および“その他”の小項目に分類される。“木材”は、枝メニュー“０”および“１”に属し、“金属”は枝メニュー“１”および“２”に属し、“その他”は枝メニュー“０”，“１”および“２”に属する。枝メニュー“０”に属する“木材”には小項目番号“０”が割り当てられ、枝メニュー“１”に属する“木材”には小項目番号“１”が割り当てられる。枝メニュー“１”に属する“金属”には小項目番号“０”が割り当てられ、枝メニュー“２”に属する“金属”には小項目番号“０”が割り当てられる。枝メニュー“０”に属する“その他”には小項目番号“１”が割り当てられ、枝メニュー“１”に属する“その他”には小項目番号“２”が割り当てられ、枝メニュー“２”に属する“その他”には小項目番号“１”が割り当てられる。
【００２９】
“材料”は、“真鍮（銅７０％）”，“真鍮（銅８０％）”，“真鍮（銅９０％）”，“金”，“銀”，“マホガニ（紅木）”，“エボニ（黒檀）”，“ローズウッド（紫檀）”および“その他”の小項目に分類される。“真鍮（銅７０％）”，“真鍮（銅８０％）”，“真鍮（銅９０％）”，“金”および“銀”は、枝メニュー“０”に属する。“マホガニ（紅木）”，“エボニ（黒檀）”および“ローズウッド（紫檀）”は、枝メニュー“１”に属する。“その他”は、枝メニュー“０”および“１”に属する。
【００３０】
“真鍮（銅７０％）”には小項目番号“０”が割り当てられ、“真鍮（銅８０％）”には小項目番号“１”が割り当てられ、“真鍮（銅９０％）”には小項目番号“２”が割り当てられる。“金”には小項目番号“３”が割り当てられ、“銀”には小項目番号“４”が割り当てられる。枝メニュー“０”に属する“その他”には小項目番号“５”が割り当てられる。“マホガニ（紅木）”には小項目番号“０”が割り当てられ、“エボニ（黒檀）”には小項目番号“１”が割り当てられ、“ローズウッド（紫檀）”には小項目番号“２”が割り当てられる。枝メニュー“１”に属する“その他”には小項目番号“３”が割り当てられる。
【００３１】
“表面処理”は、“金メッキ”，“銀メッキ”，“その他メッキ”，“漆”，“ニス”，“無垢”，“ラッカー”および“その他塗装”の小項目に分類される。“金メッキ”，“銀メッキ”，“その他メッキ”は枝メニュー“０”に属し、“漆”および“ニス”は枝メニュー“１”に属する。“無垢”，“ラッカー”および“その他塗装”の各々は、枝メニュー“０”および“１”に属する。
【００３２】
“金メッキ”には小項目番号“３”が割り当てられ、“銀メッキ”には小項目番号“４”が割り当てられ、“その他メッキ”には小項目番号“５”が割り当てられる。“漆”には小項目番号“２”が割り当てられ、“ニス”には小項目番号“３”が割り当てられる。枝メニュー“０”および“１”のいずれにおいても、“無垢”には小項目番号“０”が割り当てられ、“ラッカー”には小項目番号“１”が割り当てられる。これに対して、枝メニュー“０”に属する“その他塗装”には小項目番号“２”が割り当てられ、枝メニュー“１”に属する“その他塗装”には小項目番号“４”が割り当てられる。
【００３３】
各々の枝メニューにはまた、他の小項目との依存関係を示す３つの番号が割り当てられる。このうち、左端の番号は依存する大項目の番号であり、中央の番号は依存する枝メニューの番号であり、右端の番号は依存する小項目の番号である。なお、“−１”は依存関係がないことを意味する。したがって、“音楽ジャンル”または“楽器分類”に属する枝メニュー“０”は、いずれの小項目にも依存しない。
【００３４】
これに対して、“楽器名”については、枝メニュー“０”が“楽器分類”の“弦楽器”に依存し、枝メニュー“１”が“楽器分類”の“木管楽器”に依存し、枝メニュー“２”が“楽器分類”の“金管楽器”に依存し、枝メニュー“３”が“楽器分類”の“打楽器”に依存し、そして枝メニュー“４”が“楽器分類”の“鍵盤楽器”に依存する。
【００３５】
“材質”については、枝メニュー“０”が、“楽器分類”の“バイオリン”，“ビオラ”，“チェロ”，“コントラバス”，“オーボエ”，“クラリネット”または“ファゴット”に依存する。また、枝メニュー“１”が、“楽器分類”の“フルート”に依存する。さらに、枝メニュー“２”が、“サクソフォン”，“ホルン”，“トランペット”，“トロンボーン”，“ユーフォニアム”または“チューバ”に依存する。
【００３６】
“材料”については、枝メニュー“０”が“材質”の“金属”に依存し、枝メニュー“１”が“材質”の“木材”に依存する。“表面処理”については、枝メニュー“０”が“材質”の“金属”に依存し、枝メニュー“１”が“材質”の“木材”に依存する。
【００３７】
メニュー表示がオフされている状態でメニューキー４８が操作されると、まず図７（Ａ）に示す大項目メニューがＬＣＤ３０に表示される。図７（Ａ）によれば、“音楽ジャンル”および“楽器分類”の文字列が画面中央に表示され、“音楽ジャンル”がカーソルＣＳによって指向される。カーソルＣＳは、アップキー５２の操作に応答して上方に移動し、ダウンキー５４の操作に応答して下方に移動する。なお、この時点で“音楽ジャンル”および“楽器分類”以外の大項目が表示されないのは、上述のような依存関係から、“楽器分類”に属する小項目を選択しない限り“楽器名”に関する小項目の選択を許容するべきではなく、“楽器名”に属する小項目を選択しない限り“材質”，“材料”または“表面処理”に関する小項目の選択を許容するべきではないからである。
【００３８】
図７（Ａ）に示す状態でダウンキー５４が１回操作されると、カーソルＣＳは、図７（Ｂ）に示すように“楽器分類”を指向する。カーソルＣＳが“楽器分類”を指向する状態でセットキー５０が操作されると、画面表示は図７（Ｂ）に示す大項目メニューから図８（Ａ）に示す枝メニューに遷移する。図８（Ａ）によれば、“楽器分類”に属する小項目を表す“弦楽器”，“木管楽器”，“金管楽器”，“打楽器”および“鍵盤楽器”の文字列が、画面中央に表示される。カーソルＣＳは、“弦楽器”を指向する。この状態でダウンキー５４が１回操作されると、カーソルＣＳの指向先は、図８（Ｂ）に示すように“木管楽器”に移行する。
【００３９】
カーソルＣＳが“木管楽器”を指向している状態でセットキー５０が操作されると、画面表示は図８（Ｂ）に示す枝メニューから図９（Ａ）に示す大項目メニューに遷移する。図９（Ａ）によれば、“楽器分類”の文字列に代えて“木管楽器”の文字列が表示され、その下に“楽器名”の文字列が表示される。これによって、“楽器分類”として“木管楽器”が選択されたこと、ならびに“楽器名”に属する小項目の選択が促されていることが分かる。この時点では“楽器名”に属する小項目が特定されていないため、“材質”，“材料”および“表面処理”の大項目は未だ表示されない。なお、図８（Ｂ）に示す枝メニューが表示されているときにメニューキー４８を操作すると、画面表示が図７（Ｂ）に示す大項目メニューに戻る。
【００４０】
ダウンキー５４によってカーソルＣＳを“音楽ジャンル”から“楽器名”に合わせた状態でセットキー５０を操作すると、画面表示は、図９（Ｂ）に示す大項目メニューから図１０（Ａ）に示す枝メニューに遷移する。図１０（Ａ）によれば、“楽器名”の枝メニュー“０”に属する“オーボエ”，“フルート”，“クラリネット”，“ファゴット”および“サクソフォン”の文字列が画面中央に表示される。かかる文字列が表示されるのは、図２に示す“木管楽器”との依存関係を示す“１”，“０”および“１”の番号が枝メニュー“０”に割り当てられているからである。なお、カーソルＣＳは、“オーボエ”を指向する。
【００４１】
この状態からダウンキー５４によってカーソルＣＳを“フルート”に合わせ、かつセットキー５０を操作すると、画面表示は図１０（Ｂ）に示す枝メニューから図１１（Ａ）に示す大項目メニューに遷移する。図１１（Ａ）によれば、“楽器名”の文字列に代えて“フルート”の文字列が表示され、その下に“材質”，“材料”および“表面処理”の文字列が表示される。これによって、“楽器名”として“フルート”が選択されたこと、および“材質”，“材料”および“表面処理”の各々に属する小項目の選択が促されていることが分かる。なお、セットキー５０の代わりにメニューキー４８が押された場合、画面表示は図１０（Ｂ）に示す枝メニューから図９（Ｂ）に示す大項目メニューに戻る。
【００４２】
ダウンキー５４によってカーソルＣＳを“材質”に合わせた状態でセットキー５０を操作すると、画面表示は、図１１（Ｂ）の大項目メニューから図１２（Ａ）に示す枝メニューに遷移する。図１２（Ａ）によれば、“材質”に属する小項目を表す“金属”，“木材”および“その他”の文字列が画面中央に表示される。これらの小項目が表示されるのは、図２に示す“フルート”との依存関係を示す“２”，“１”および“１”の番号が図３に示す“金属”，“木材”および“その他”に割り当てられているからである。
【００４３】
ここで、ダウンキー５４によってカーソルＣＳを“木材”に合わせ、かつセットキー５０を操作すると、画面表示は、図１２（Ｂ）に示す枝メニューから図１３（Ａ）に示す大項目メニューに遷移する。図１３（Ａ）によれば、“材質”の文字列に代えて“木材”の文字列が表示される。これによって、“材質”として“木材”が選択されたことが分かる。なお、セットキー５０の代わりにメニューキー４８が押された場合、画面表示は図１２（Ｂ）に示す枝メニューから図１１（Ｂ）に示す大項目メニューに戻る。
【００４４】
ダウンキー５４によってカーソルＣＳを“材料”に合わせ、かつセットキー５０を操作すると、画面表示は、図１３（Ｂ）に示す大項目メニューから図１４（Ａ）に示す枝メニューに遷移する。図１４（Ａ）によれば、“材料”に属する小項目を表す“マホガニ（紅木）”，“エボニ（黒檀）”，“ローズウッド（紫檀）”および“その他”の文字列が画面中央に表示される。これらの小項目が表示されるのは、図３に示す“木材”との依存関係を示す“３”，“１”および“１”の番号が図４に示す“マホガニ（紅木）”，“エボニ（黒檀）”，“ローズウッド（紫檀）”および“その他”に割り当てられているからである。
【００４５】
図１４（Ａ）に示す枝メニューでは、カーソルＣＳは“マホガニ（紅木）”を指向する。ここで、ダウンキー５４が操作されると、カーソルＣＳは、図１４（Ｂ）に示すように“エボニ（黒檀）”に移動する。かかるキー操作を繰り返すことによって、各々の大項目について所望の小項目が選択されていく。なお、全ての大項目について小項目を選択する必要はない。選択が行なわれなかった大項目は、空欄とされる。
【００４６】
このような詳細情報の入力操作は、シャッタキー４６の操作に先立って行われる。入力された詳細情報は、シャッタキー４６の操作に応答して作成された画像ファイルのヘッダに埋め込まれる。これによって、どのような楽器が製作されているかを撮影画像と詳細情報とに基づいて正確に把握することができる。
【００４７】
続いて、詳細情報の入力に利用される表示制御テーブルおよび文字列データの構造を、図１５〜図１７を参照して説明する。表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬは、図１５および図１６に示す構造を有し、文字列データＧＵＩＣＯＮＦ０．ＤＡＴは、図１７に示す構造を有する。
【００４８】
図１５および図１６を参照して、表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬは、１つのＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］、および連続するＮ個のＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］を含む。ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］の各々には、連続するＩ個の枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］が割り当てられる。さらに、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々には、連続するＫ個のメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］と、連続するＬ個のツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］とが割り当てられる。
【００４９】
ＧＵＩテーブルは、図２〜図４に示す大項目毎に用意される。上述のように、“音楽ジャンル”，“楽器分類”，“楽器名”，“材質”，“材料”および“表面処理”の６つが大項目として存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［５］が表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬに用意される。
【００５０】
枝メニューテーブルは、図２〜図４に示す枝メニュー毎に用意される。“音楽ジャンル”の枝メニューは１つであるため、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］のみがＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に割り当てられる。“楽器分類”の枝メニューもまた１つであるため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］にも枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］のみが割り当てられる。“楽器名”の枝メニューは４つであるため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］には枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［３］が割り当てられる。“材質”の枝メニューは３つであるため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］には枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［２］が割り当てられる。“材料”の枝メニューは２つであるため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］には枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［１］が割り当てられる。“表面処理”の枝メニューもまた２つであるため、ＧＵＩテーブル＜ＧＵＩＴＢＬ＞［５］には枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［１］が割り当てられる。
【００５１】
メニューストリングは、図２〜図４に示す小項目毎に用意される。“音楽ジャンル”については、３つの小項目“クラシック”，“ジャズ”および“その他”が枝メニュー“０”に属する。このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［２］が、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられる。“楽器分類”については、４つの小項目が“弦楽器”，“木管楽器”，“金管楽器”，“打楽器”および“鍵盤楽器”が枝メニュー“０”に属する。このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［３］が、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられる。
【００５２】
“楽器名”については、“バイオリン”，“ビオラ”，“チェロ”および“コントラバス”の４つの小項目が枝メニュー“０”に属し、“オーボエ”，“フルート”，“クラリネット”，“ファゴット”および“サクソフォン”の５つの小項目が枝メニュー“１”に属する。また、“ホルン”，“トランペット”，“トロンボーン”，“ユーフォニアム”，“チューバ”の５つの小項目が枝メニュー“２”に属し、“ティンパニ”，“スネアドラム”および“バスドラム”の３つの小項目が枝メニュー“３”に属し、そして“ピアノ”，“チェレスタ”および“オルガン”の３つの小項目が枝メニュー“４”に属する。
【００５３】
このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［３］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［４］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］に割り当てられる。また、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［４］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［２］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［２］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［３］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［２］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［４］に割り当てられる。
【００５４】
“材質”については、“木材”および“その他”の２つの小項目が枝メニュー“０”に属し、“金属”，“木材”および“その他”の３つの小項目が枝メニュー“１”に属し、そして“金属”および“その他”の２つの小項目が枝メニュー“２”に属する。このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［１］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［２］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］に割り当てられ、そしてメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［１］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［２］に割り当てられる。
【００５５】
“材料”については、“真鍮（銅７０％）”，“真鍮（銅８０％）”，“真鍮（銅９０％）”，“金”，“銀”および“その他”の６つの小項目が枝メニュー“０”に属し、“マホガニ（紅木）”，“エボニ（黒檀）”，“ローズウッド（紫檀）”および“その他”の４つの小項目が枝メニュー“１”に属する。このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［５］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［３］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］に割り当てられる。
【００５６】
“表面処理”については、“無垢”，“ラッカー”，“その他塗装”，“金メッキ”，“銀メッキ”および“その他メッキ”の６つの小項目が枝メニュー“０”に属し、“無垢”，“ラッカー”，“漆”，“ニス”および“その他塗装”の５つの小項目が枝メニュー“１”に属する。このため、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［５］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［５］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］に割り当てられ、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［４］がＧＵＩテーブル＜ｇｕｉｔｂｌ＞［５］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］に割り当てられる。
【００５７】
ツリーテーブルは、図２〜図４に示す依存関係毎に用意される。“音楽ジャンル”には枝メニュー“０”が設けられ、枝メニュー“０”の下に１つの依存関係が存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］が割り当てられる。“楽器分類”にも枝メニュー“０”が設けられ、枝メニュー“０”の下に１つの依存関係が存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］が割り当てられる。“楽器名”には枝メニュー“０”〜“４”が設けられ、かかる枝メニュー“０”〜“４”の下に依存関係が１つずつ存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［４］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］が１つずつ割り当てられる。
【００５８】
“材質”には、枝メニュー“０”〜“２”が設けられる。枝メニュー“０”の下には７つの依存関係が存在し、枝メニュー“１”の下には１つの依存関係が存在し、そして枝メニュー“２”の下には６つの依存関係が存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［６］が割り当てられ、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］が割り当てられ、そしてＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［２］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［５］が割り当てられる。
【００５９】
“材料”には枝メニュー“０”および“１”が設けられ、かかる枝メニュー“０”および“１”の下に依存関係が２つずつ存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［１］が割り当てられ、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［１］が割り当てられる。
【００６０】
“表面処理”にも枝メニュー“０”および“１”が設けられ、かかる枝メニュー“０”および“１”の下に依存関係が２つずつ存在する。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［５］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［１］が割り当てられ、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［５］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［１］にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［１］が割り当てられる。
【００６１】
ＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］は、＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥおよびＬＡＮ＿ＧＵＩ＿ＭＡＸＮＵＭを含む。＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥを形成する４バイトには、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］の先頭アドレスが記述される。ＬＡＮ＿ＧＵＩ＿ＭＡＸＮＵＭを形成する１バイトには、“Ｎ”の具体的な数値（＝６）が記述される。
【００６２】
ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］の各々は、＊ＧＵＩ＿ＴＡＢＬＥ，ＧＵＩ＿ＳＩＺＥ，ＧＵＩ＿ＶＩＳＩＢＬＥ，ＧＵＩ＿ＳＥＬＥＣＴ，ＧＵＩ＿ＰＲＯＰＥＲＴＹ，＊ＧＵＩ＿ＬＩＮＫＡＤＲ，ＧＵＩ＿ＭＡＸＮＵＭおよびＧＵＩ＿ＭＥＭＢＥＲを含む。＊ＧＵＩ＿ＴＡＢＬＥを形成する４バイトには、文字列データＧＵＩＣＯＮＦ０．ＤＡＴに含まれる所望の文字列の先頭アドレスが記述される。所望の文字列は、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］  にとっては“音楽ジャンル”であり、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］にとっては“楽器分類”であり、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］にとっては“楽器名”である。また、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］にとっては“材質”であり、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［４］にとっては“材料”であり、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［５］にとっては“表面処理”である。
【００６３】
ＧＵＩ＿ＳＩＺＥを形成する１バイトには、表示する文字列のサイズが記述される。たとえば“音楽ジャンル”のサイズは１２バイトであり、“楽器分類”のサイズは８バイトである。
【００６４】
ＧＵＩ＿ＶＩＳＩＢＬＥを形成する１バイトには、表示の可否を示す識別子が記述される。この実施例では、全ての文字列が表示可能であるため、ＧＵＩ＿ＶＩＳＩＢＬＥには常に“表示可”を示す識別子が記述される。
【００６５】
ＧＵＩ＿ＳＥＬＥＣＴを形成する１バイトには、選択の可否を示す識別子が記述される。上述の依存関係から、選択が許容される大項目と選択が禁止される大項目とが存在する。したがって、図７（Ａ）に示す大項目メニューが表示されるとき、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［１］のＧＵＩ＿ＳＥＬＥＣＴには“選択可”を示す識別子が記述されるが、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［３］〜＜ｇｕｉｔｂｌ＞［５］のＧＵＩ＿ＳＥＬＥＣＴには“選択不可”を示す識別子が記述される。
【００６６】
ＧＵＩ＿ＰＲＯＰＥＲＴＹを形成する１バイトには、自分に属する小項目の選択状態を示す識別子が記述される。自分に属する小項目が未だ選択されていなければ“項目未選択”を示す識別子が記述され、自分に属する小項目が選択済みであれば“項目選択済み”を示す識別子が記述され、そして自分に属する小項目が変更不可能にロックされていれば“項目ロック”を示す識別子が記述される。
【００６７】
＊ＧＵＩ＿ＬＩＮＫＡＤＲを形成する４バイトには、自分に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の先頭アドレスが記述される。また、ＧＵＩ＿ＭＡＸＮＵＭを形成する１バイトには、“Ｉ”の具体的な数値（＜ｇｕｉｔｂｌ＞［２］については“５”）が記述される。
【００６８】
ＧＵＩ＿ＭＥＭＢＥＲを形成する３バイトには、選択項目情報が記述される。つまり、自分に属する小項目が選択済みあるいはロックされているときは、この小項目が属する枝メニューの番号が第１バイトに記述され、この小項目自体の番号が第２バイトに記述される。自分に属する小項目が未選択のときは、“−１”が第１バイトおよび第２バイトに記述される。なお、第０バイトは予約領域である。
【００６９】
枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々は、＊ｓｔｒ＿ｔａｂｌｅ，ｓｔｒ＿ｍａｘｎｕｍ，ｔｒｅｅ＿ｍａｘｎｕｍおよび＊ｔｒｅｅ＿ｔａｂｌｅを含む。＊ｓｔｒ＿ｔａｂｌｅを形成する４バイトには、自分に属するメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］の先頭アドレスが記述される。ｓｔｒ＿ｍａｘｎｕｍを形成する１バイトには、“Ｋ”の具体的な数値（＜ｇｕｉｔｂｌ＞［２］に属する＜ｍｅｎｕ＿ｔｂｌ＞［０］については“４”）が記述される。＊ｔｒｅｅ＿ｔａｂｌｅを形成する４バイトには、自分に属するツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］の先頭アドレスが記述される。ｔｒｅｅ＿ｍａｘｎｕｍを形成する１バイトには、“Ｌ”の具体的な数値（＜ｇｕｉｔｂｌ＞［３］に属する＜ｍｅｎｕ＿ｔｂｌ＞［２］については“６”）が記述される。
【００７０】
メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］の各々は、＊ｍ＿ｓｔｒｉｎｇ，ｍ＿ｌｅｎｇｔｈ，およびｍ＿ｆｒｅｅを含む。＊ｍ＿ｓｔｒｉｎｇを形成する４バイトには、文字列データＧＵＩＣＯＮＦ０．ＤＡＴに含まれる所望の文字列の先頭アドレスが記述される。ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］の下のメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］に注目した場合、所望の文字列は、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］にとっては“クラシック”であり、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［１］にとっては“ジャズ”であり、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［２］にとっては“その他”である。
【００７１】
ｍ＿ｌｅｎｇｔｈを形成する１バイトには、所望の文字列のサイズが記述される。ｍ＿ｆｒｅｅを形成する１バイトには、表示の可否を示す識別子が記述される。この実施例では、＊ｍ＿ｓｔｒｉｎｇが示す文字列つまり小項目は全て表示される。このため、ｍ＿ｆｒｅｅには“表示可”を示す識別子が常に記述される。
【００７２】
ツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］の各々は、ｇｕｉ＿ｔｒｅｅを含む。ｇｕｉ＿ｔｒｅｅを形成する３バイトには、依存関係情報が記述される。つまり、第０バイトには依存する大項目の番号が記述され、第１バイトには依存する枝メニューの番号が記述され、そして第２バイトには依存する小項目の番号が記述される。たとえば、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［２］の下のツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］に注目した場合、ｇｕｉ＿ｔｒｅｅの第０バイト，第１バイトおよび第２バイトには、“１”，“０”および“２”がそれぞれ記述される。
【００７３】
図１７を参照して、文字列データＧＵＩＣＯＮＦ０．ＤＡＴは、メニュー画面に表示される文字列のデータを含む。各々の文字列を形成する１文字（全角文字）は２バイトを用いて記述される。また、各々の文字列は、ヌルコードが記述された１バイトによって区切られる。たとえば、“音楽ジャンル”は１２バイトを用いて記述され、“楽器分類”は８バイトを用いて記述され、そして“音楽ジャンル”と“楽器分類”との間にヌルコードが記述される。
【００７４】
続いて、メニューファイルデータをＳＤＲＡＭ２２に確保する処理、ならびに表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴに基づくメニュー処理に重点を置いて、ＣＰＵ４４の詳しい処理を説明する。ＣＰＵ４４は、フラッシュメモリ４２に格納されたかつ図２０〜図４２に示すフロー図に対応する制御プログラムを実行する。
【００７５】
まず、図２０に示すステップＳ１で、スロット３６に装着されたカードがメモリカード３８および通信カード４０のいずれであるかを判別する。装着されたカードがメモリカード３８であればステップＳ７に進み、このメモリカード３８にメニュー設定ファイルが記録されているかどうか判断する。ＮＯと判断されたときはステップＳ２７に進むが、ＹＥＳと判断されたときはステップＳ９に進む。
【００７６】
ステップＳ９では、このメニュー設定ファイルに格納された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴをメモリカード３８からＳＤＲＡＭ２２に転送する。この転送処理によって、表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬのサイズデータが図１８に示すＳＤＲＡＭ２２のアドレス０ｘ４９００００００から始まる４バイトに書き込まれ、この４バイトに続いて表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬが書き込まれる。この実施例では、表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬは０ｘ３４Ｃバイトのサイズを有し、表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬの末尾はアドレス０ｘ４９０００３４Ｆに書き込まれる。アドレス０ｘ４９０００３５０から始まる４バイトには文字列データＧＵＩＣＯＮＦ０．ＤＡＴのサイズデータが書き込まれ、この４バイトに続いて文字列データＧＵＩＣＯＮＦ０．ＤＡＴが書き込まれる。文字列データＧＵＩＣＯＮＦ０．ＤＡＴは０ｘ１Ｅ９バイトのサイズを有し、文字列データＧＵＩＣＯＮＦ０．ＤＡＴの末尾はアドレス０ｘ４９０００５３Ｄに書き込まれる。
【００７７】
ステップＳ１１ではＳＤＲＡＭ２２に転送された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬをフラッシュメモリ４２に格納された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬと比較し、ステップＳ１３では両者が一致するかどうかを比較する。両者が不一致の場合、あるいはフラッシュメモリ４２に表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬが存在しない場合は、ステップＳ１３でＮＯと判断し、ステップＳ１９で表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよびそのサイズデータをＳＤＲＡＭ２２上で移動させる。具体的には、図１８に示すアドレス０ｘ４９０００５４０以降への複写を行う。
【００７８】
ステップＳ２１では表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬが有するアドレス値をオフセット処理によって補正し、ステップＳ２３では補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬが有効であるかどうかを判断する。ここでＮＯと判断されたときはステップＳ２７に進むが、ＹＥＳと判断されたときはステップＳ２５に進む。ステップＳ２５では、ＳＤＲＡＭ２２に格納されたオリジナルの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴと補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬとをこれらのサイズデータとともにフラッシュメモリ４２に転送する。オリジナルの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴと補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬとこれらのサイズデータとは、図１９に示す要領でフラッシュメモリ４２に格納される。ステップＳ２５の処理が完了すると、ステップＳ４７に進む。
【００７９】
ステップＳ１３でＹＥＳと判断されたときはステップＳ１５に進み、補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬとそのサイズデータとをフラッシュメモリ４２からＳＤＲＡＭ２２に転送する。補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬとそのサイズデータとは、図１８に示すアドレス０ｘ４９０００５４０以降に書き込まれる。ステップＳ１７では、ステップＳ２３と同様の判断処理を行い、ＮＯと判断されたときはステップＳ２７に進み、ＹＥＳと判断されたときはステップＳ４７に進む。
【００８０】
スロット３６に通信カード４０が装着されているときは、ステップＳ３およびＳ５でステップＳ１５およびＳ１７と同様の処理を実行する。そして、ステップＳ５でＮＯと判断されたときはステップＳ６７に進み、ステップＳ５でＹＥＳと判断されたときはステップＳ９７に進む。
【００８１】
図２１に示すステップＳ２７ではメモリカード３８の空き容量を取得し、続くステップＳ２９では取得した空き容量を閾値ＭＩＮと比較する。空き容量が閾値ＭＩＮ以下のときは、ステップＳ２９でＮＯと判断し、ステップＳ３１で警告を発生する。これに対して、空き容量が閾値ＭＩＮを上回るときは、ステップＳ２９からステップＳ３３に進み、次回の撮影によって得られるＪＰＥＧデータを格納する画像ファイルのファイル名を決定する。
【００８２】
ステップＳ３５ではシャッタキー４６の操作の有無を判別し、ステップＳ３７ではメニューキー４８の操作の有無を判別する。メニューキー４８が操作されたときはステップＳ３９で特別メニュー処理を行い、処理が完了するとステップＳ３９に戻る。特別メニュー処理によって、図７（Ａ）〜図１４（Ｂ）に示す要領で詳細情報が作成される。シャッタキー４６が操作されたときは、ステップＳ４１で撮影処理を行い、ステップＳ４３でファイルヘッダを作成する。ステップＳ４１の撮影処理によって、撮影画像のＪＰＥＧデータが得られる。また、ステップＳ４３の処理によって、特別メニュー処理で作成された詳細情報がファイルヘッダに埋め込まれる。ステップＳ４５では、ＪＰＥＧデータおよびファイルヘッダを含む画像ファイルをメモリカード３８に記録する。ステップＳ４５の処理が完了すると、ステップＳ２７に戻る。
【００８３】
図２２に示すステップＳ４７〜Ｓ６５の処理は、ステップＳ５９で通常メニュー処理を行い、通常メニュー処理によって作成されたメニュー情報を含むファイルヘッダをステップＳ６３で作成する点を除き、上述のステップＳ２７〜Ｓ４５と同様であるため、重複した説明は省略する。
【００８４】
図２３に示すステップＳ６７では、サーバとの接続状態が確保されているかどうか判断する。ここでＮＯと判断されると、ステップＳ７５でフラグｌａｎ＿ｆｌｇをリセットし、フラッシュメモリ４２に十分な空き容量があるかどうかをステップＳ７７で判断する。空き容量が十分であるときはステップＳ７７からステップＳ７９に進むが、空き容量が不十分であるときはステップＳ７５からステップＳ６７に戻る。
【００８５】
ステップＳ６７でＹＥＳと判断されると、ステップＳ６９でフラグｌａｎ＿ｆｌｇをセットし、フラッシュメモリ４２に未送信の画像ファイルが存在するかどうかをステップＳ７１で判断する。ＮＯと判断されたときはステップＳ７９に進み、ＹＥＳと判断されたときはステップＳ７３のサーバ転送処理を経てステップＳ６７に戻る。サーバ転送処理によって、未送信画像ファイルがフラッシュメモリ４２から読み出され、読み出された未送信画像ファイルが通信カード４０を経てサーバに転送される。
【００８６】
ステップＳ７９〜Ｓ８９では、上述のステップＳ３３〜Ｓ４３と同様の処理を行う。したがって、メニューキー４８の操作によって所望の詳細情報が作成され、シャッタキー４６の操作によって撮影画像のＪＰＥＧデータと詳細情報とを含む画像ファイルが作成される。ステップＳ９１ではフラグｌａｎ＿ｆｌｇの状態を判別する。フラグｌａｎ＿ｆｌｇがセット状態のときはステップＳ９３に進み、作成された画像ファイルを通信カード４０を介してサーバに転送する。フラグｌａｎ＿ｆｌｇがリセット状態のときはステップＳ９５に進み、作成された画像ファイルをフラッシュメモリ４２に記録する。ステップＳ９３またはＳ９５の処理が完了すると、ステップＳ６７に戻る。
【００８７】
図２４を参照して、ステップＳ９７ではサーバとの接続状態が確保されているかどうかを判断する。接続状態が確保されていなければステップ９９に進み、タイムアウトが発生したかどうかを判断する。そして、タイムアウトが発生していなければステップＳ９７に戻るが、タイムアウトが発生するとステップＳ１０５で警告を発生する。
【００８８】
サーバとの接続状態が確保されると、ステップＳ１０１でサーバの空き容量を取得し、ステップＳ１０３でこの空き容量を閾値ＭＩＮと比較する。空き容量が閾値ＭＩＮ以下であればステップＳ１０５で警告を発生するが、空き容量が閾値ＭＩＮを上回ればステップＳ１０７〜Ｓ１１７で上述のステップＳ５５〜Ｓ６３と同様の処理を行う。したがって、メニューキー４８の操作によって所望のメニュー情報が作成され、シャッタキー４６の操作によって撮影画像のＪＰＥＧデータとメニュー情報とを含む画像ファイルが作成される。ステップＳ１１９ではステップＳ９３と同様のサーバ転送処理を行い、処理が完了するとステップＳ９７に戻る。
【００８９】
図２０に示すステップＳ２１のオフセット処理は、図２５〜図２９に示すサブルーチンに従う。まず図２５を参照して、ステップＳ２０１では数１に従ってオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを算出し、ステップＳ２０３では数２に従ってオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを算出し、そしてステップＳ２０５では数３に従ってアドレス値ａｄｒを算出する。
【００９０】
【数１】
ＴＢＬ＿Ｏｆｆｓｅｔ＝
（０ｘ４９００００００＋表示制御テーブルサイズ＋文字列データサイズ＋８）＋４
【００９１】
【数２】
ＤＡＴ＿Ｏｆｆｓｅｔ＝（０ｘ００１Ｅ００００＋表示制御テーブルサイズ＋４）＋４
【００９２】
【数３】
ａｄｒ＝０ｘ４９００００００＋表示制御テーブルサイズ＋文字列データサイズ＋８
数１の演算によって、図１８に示すアドレス値０ｘ４９００００００と、オリジナルの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴのサイズ値と、各々のサイズデータを記述するためのサイズ値（＝８バイト）と、補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬのサイズデータを記述するためのサイズ値（＝４バイト）とが、互いに加算される。ＴＢＬ＿Ｏｆｆｓｅｔは、補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬの先頭アドレスを指向する。
【００９３】
数２の演算によって、図１９に示すアドレス値０ｘ００１Ｅ００００と、オリジナルの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬのサイズ値と、そのサイズデータを記述するためのサイズ値（＝４バイト）と、オリジナルの文字列データＧＵＩＣＯＮＦ０．ＤＡＴのサイズデータを記述するためのサイズ値（＝４バイト）とが、互いに加算される。ＤＡＴ＿Ｏｆｆｓｅｔは、オリジナルの文字列データＧＵＩＣＯＮＦ０．ＤＡＴの先頭アドレスを指向する。
【００９４】
数３の演算によって、図１８に示すアドレス値０ｘ４９００００００と、オリジナルの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴのサイズ値と、各々のサイズデータを記述するためのサイズ値（＝８バイト）とが、互いに加算される。変数ａｄｒは、補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬのデータサイズが記述された４バイトの先頭アドレスを指向する。
【００９５】
ステップＳ２０７では、変数ｓｉｚｅとして変数ａｄｒ以降の４バイト値を設定する。変数ｓｉｚｅは、補正された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬのサイズを示すこととなる。ステップＳ２０９では、変数ａｄｒと“４”との加算値を変数ｌａｎｔａｂｌｅとして設定する。これによって、図１６に示すＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］が注目される。
【００９６】
ステップＳ２１１では、ＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］に含まれる＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥの最上位ビット値を判別する。最上位ビット値が“０”であればステップＳ２１３に進み、最上位ビット値が“１”であればステップＳ２１５に進む。ステップＳ２１３では、＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥに記述する。ステップＳ２１５では、＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥに記述する。この実施例では、＊ＬＡＮ＿ＧＵＩ＿ＴＡＢＬＥの最上位ビット値は常に“０”であり、必ずステップＳ２１３の処理が実行される。
【００９７】
ステップＳ２１７では、ステップＳ２１３またはＳ２１５で更新されたアドレス値を変数ｇｕｉｔｂｌとして設定する。これによって、図１６に示すＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］が注目される。ステップＳ２１９では変数ｉを“０”に設定し、ステップＳ２２１ではＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれる＊ＧＵＩ＿ＴＡＢＬＥの最上位ビット値を判別する。
【００９８】
最上位ビット値が“０”であればステップＳ２２３に進み、最上位ビット値が“１”であればステップＳ２２５に進む。ステップＳ２２３では、＊ＧＵＩ＿ＴＡＢＬＥに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ＧＵＩ＿ＴＡＢＬＥに記述する。ステップＳ２２５では、＊ＧＵＩ＿ＴＡＢＬＥに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ＧＵＩ＿ＴＡＢＬＥに記述する。この実施例では、＊ＧＵＩ＿ＴＡＢＬＥの最上位ビット値は常に“１”であり、必ずステップＳ２２５の処理が実行される。
【００９９】
ステップＳ２２３またはＳ２２５の処理が完了するとステップＳ２２７に進み、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれる＊ＧＵＩ＿ＬＩＮＫＡＤＲの最上位ビット値を判別する。最上位ビット値が“０”であればステップＳ２２９に進み、最上位ビット値が“１”であればステップＳ２３１に進む。ステップＳ２２９では、＊ＧＵＩ＿ＬＩＮＫＡＤＲに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ＧＵＩ＿ＬＩＮＫＡＤＲに記述する。ステップＳ２３１では、＊ＧＵＩ＿ＬＩＮＫＡＤＲに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ＧＵＩ＿ＬＩＮＫＡＤＲに記述する。この実施例では、＊ＧＵＩ＿ＬＩＮＫＡＤＲの最上位ビット値は常に“０”であり、必ずステップＳ２２９の処理が実行される。
【０１００】
ステップＳ２３３では変数ｉをインクリメントし、ステップＳ２３５では更新された変数ｉをＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］の＊ＬＡＮ＿ＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｎと比較する。そして、変数ｉが数値Ｎを下回る限り、ステップＳ２２１〜Ｓ２３３の処理を繰り返す。変数ｉが数値Ｎに達すると、ステップＳ２３５からステップＳ２３７に進む。
【０１０１】
ステップＳ２３７では変数ｉを再度“０”に設定し、ステップＳ２３９ではＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれる＊ＧＵＩ＿ＬＩＮＫＡＤＲが示すアドレス値（更新されたアドレス値）を変数ｍｅｎｕ＿ｔｂｌとして設定し、ステップＳ２４１では変数ｊを“０”に設定する。ステップＳ２４３では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］について、＊ｓｔｒ＿ｔａｂｌｅの最上位ビット値を判別する。変数ｉおよびｊがいずれも“０”のときは、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］について、＊ｓｔｒ＿ｔａｂｌｅの最上位ビット値が判別される。
【０１０２】
この最上位ビット値が“０”であればステップＳ２４５に進み、最上位ビット値が“１”であればステップＳ２４７に進む。ステップＳ２４５では、＊ｓｔｒ＿ｔａｂｌｅに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ｓｔｒ＿ｔａｂｌｅに記述する。ステップＳ２４７では、＊ｓｔｒ＿ｔａｂｌｅに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ｓｔｒ＿ｔａｂｌｅに記述する。この実施例では、＊ｓｔｒ＿ｔａｂｌｅの最上位ビット値は常に“０”であり、必ずステップＳ２４５の処理が実行される。
【０１０３】
ステップＳ２４９では注目する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に含まれる＊ｔｒｅｅ＿ｔａｂｌｅの最上位ビット値を判別する。この最上位ビット値が“０”であればステップＳ２５１に進み、最上位ビット値が“１”であればステップＳ２５３に進む。ステップＳ２５１では、＊ｔｒｅｅ＿ｔａｂｌｅに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ｔｒｅｅ＿ｔａｂｌｅに記述する。ステップＳ２５３では、＊ｔｒｅｅ＿ｔａｂｌｅに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ｔｒｅｅ＿ｔａｂｌｅに記述する。この実施例では、＊ｔｒｅｅ＿ｔａｂｌｅの最上位ビット値は常に“０”であり、必ずステップＳ２５１の処理が実行される。
【０１０４】
ステップＳ２５１またはＳ２５３の処理が完了するとステップＳ２５５に進み、直前のステップＳ２４５またはＳ２４７で更新されたアドレス値を変数ｍｅｎｕ＿ｓｔｒとして設定する。これによって、注目する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］の下のメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］が注目される。
【０１０５】
ステップＳ２５７では変数ｋを“０”に設定し、ステップＳ２５９ではメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［ｋ］に含まれる＊ｍ＿ｓｔｒｉｎｇの最上位ビット値を判別する。変数ｉ，ｊおよびｋがいずれも“０”であれば、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］の下のメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］について、＊ｍ＿ｓｔｒｉｎｇの最上位ビット値が判別される。
【０１０６】
この最上位ビット値が“０”であればステップＳ２６１に進み、最上位ビット値が“１”であればステップＳ２６３に進む。ステップＳ２６１では、＊ｍ＿ｓｔｒｉｎｇに記述されたアドレス値にオフセット値ＴＢＬ＿Ｏｆｆｓｅｔを加算し、加算値を＊ｍ＿ｓｔｒｉｎｇに記述する。ステップＳ２６３では、＊ｍ＿ｓｔｒｉｎｇに記述されたアドレス値の最上位ビット値を“０”に変更し、変更されたアドレス値にオフセット値ＤＡＴ＿Ｏｆｆｓｅｔを加算し、そして加算値を＊ｍ＿ｓｔｒｉｎｇに記述する。この実施例では、＊ｍ＿ｓｔｒｉｎｇの最上位ビット値は常に“１”であり、必ずステップＳ２６３の処理が実行される。
【０１０７】
ステップＳ２６１またはＳ２６３の処理が完了すると、ステップＳ２６５で変数ｋをインクリメントする。ステップＳ２６７では、更新された変数ｋを枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］のｓｔｒ＿ｍａｘｎｕｍが示す数値Ｋと比較する。そして、変数ｋが数値Ｋを下回る限り、ステップＳ２５９〜Ｓ２６５の処理を繰り返す。変数ｋが数値Ｋに達すると、ステップＳ２６７でＮＯと判断し、ステップＳ２６９で変数ｊを再度インクリメントする。
【０１０８】
ステップＳ２７１では、更新された変数ｊをＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｊ］のＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｉと比較する。そして、変数ｊが数値Ｉを下回る限りステップＳ２４３〜Ｓ２６９の処理を繰り返すが、変数ｊが数値Ｉに達すると、ステップＳ２７３で変数ｉをインクリメントしてステップＳ２７５に進む。ステップＳ２７５では、更新された変数ｉをＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］の＊ＬＡＮ＿ＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｎと比較する。そして、変数ｉが数値Ｎを下回る限りステップＳ２３９〜Ｓ２７３の処理を繰り返すが、変数ｉが数値Ｎに達すると、上階層のルーチンに復帰する。
【０１０９】
このようなオフセット処理によって、図１８に示すアドレス０ｘ４９０００５４０以降に複写された表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬ内でのリンク、ならびにこの表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬと図１９に示す文字列データＧＵＩＣＯＮＦ０．ＴＢＬとの間のリンクが確保される。
【０１１０】
図２１に示すステップＳ３９または図２３に示すステップＳ８５の特別メニュー処理は、図３０〜図４２に示すサブルーチンに従う。
【０１１１】
まず図３０に示すステップＳ３０１で各種の変数を初期化する。具体的には、変数ｃｎｔ０を“０”に設定し、変数ｃｎｔ１を“１”に設定し、変数ｐｒｅ＿ｃｎｔ０を“０”に設定し、変数ｐｒｅ＿ｃｎｔ１を“０”に設定し、そして変数ｍｏｄｅを“１”に設定する。ここで、変数ｃｎｔ０は、大項目メニューおよび枝メニューのいずれを画面に表示すべきかを識別するための変数である。ｃｎｔ０＝０は大項目メニューの表示を意味し、ｃｎｔ０＝１は枝メニューの表示を意味する。変数ｃｎｔ１はカーソルＣＳの表示位置を識別するための変数である。変数ｃｎｔ１の数値が大きくなるほど、カーソルＣＳの表示位置は下方に移動する。変数ｐｒｅ＿ｃｎｔ０およびｐｒｅ＿ｃｎｔ１はそれぞれ、変数ｃｎｔ０およびｃｎｔ１の前回の数値である。変数ｍｏｄｅは、メニュー画面の描画／クリアを識別するための変数である。ｍｏｄｅ＝１はメニュー画面の描画を意味し、ｍｏｄｅ＝−１はメニュー画面のクリアを意味する。
【０１１２】
ステップＳ３０３では、メニュー表示処理を実行する。これによって、図７（Ａ）に示す大項目メニューが画面に表示される。メニュー表示が完了すると、ステップＳ３０５で変数ｔｒｅｅ＿ｎｕｍの値を判別する。変数ｔｒｅｅ＿ｎｕｍはカーソルＣＳが指向する項目の番号を示す変数である。ただし、メニュー表示処理にエラーが生じると、変数ｔｒｅｅ＿ｎｕｍは“−１”を示す。
【０１１３】
変数ｔｒｅｅ＿ｎｕｍが“−１”のときは、ステップＳ３０５からステップＳ３０７に進み、変数ｃｎｔ１を閾値ＭＡＸ＿ＮＵＭ−１と比較する。ここで、ＭＡＸ＿ＮＵＭは表示可能な項目数の上限値である。変数ｃｎｔ１が閾値ＭＡＸ＿ＮＵＭ−１に満たなければ、ステップＳ３０９で変数ｃｎｔ１をインクリメントしてからステップＳ３０３に戻る。変数ｃｎｔ１が閾値ＭＡＸ＿ＮＵＭ−１に達すると、ステップＳ３０７でＮＯと判断してエラー処理を実行する。
【０１１４】
変数ｔｒｅｅ＿ｎｕｍが“−１”以外のときは、ステップＳ３０５でＹＥＳと判断し、ステップＳ３１１〜Ｓ３１７でキー操作を判別する。具体的には、メニューキー４８の操作の有無をステップＳ３１１で判別し、アップキー５２の操作の有無をステップＳ３１３で判別し、ダウンキー５４の操作の有無をステップＳ３１５で判別し、そしてセットキー５０の操作の有無をステップＳ３１７で判別する。
【０１１５】
メニューキー４８が操作されると、ステップＳ３１１から図３１に示すステップＳ３１９に進み、変数ｃｎｔ０の値を判別する。変数ｃｎｔ０が“０”であれば、つまり画面に大項目メニューが表示されていれば、メニュー画面をクリアするべく、ステップＳ３２１以降の処理を実行する。ステップＳ３２１では変数ｃｎｔ０，ｃｎｔ１およびｍｏｄｅをそれぞれ“０”，“０”および“−１”に設定し、ステップＳ３２３ではメニュー表示処理を実行する。メニュー表示処理によるメニュー画面のクリアが完了すると、上階層のルーチンに復帰する。
【０１１６】
これに対して、変数ｃｎｔ０が“１”であれば、つまり画面に枝メニューが表示されていれば、枝メニューから大項目メニューに復帰するべく、ステップＳ３２５以降の処理を行う。ステップＳ３２５では、変数ｃｎｔ０を“０”に戻し、変数ｃｎｔ１を変数ｂａｃｋ＿ｃｎｔ１に設定し、そして変数ｍｏｄｅを“１”に設定する。変数ｂａｃｋ＿ｃｎｔ１は、大項目メニューから枝メニューへ遷移するときに変数ｃｎｔ１の値を一時的に退避させるための変数である。ステップＳ３２５の処理によって、退避されていた数値が変数ｃｎｔ１に復帰する。ステップＳ３２７ではメニュー表示処理を実行し、これによって大項目メニューが画面に表示される。ステップＳ３２７の処理が完了すると、ステップＳ３１１に戻る。
【０１１７】
アップキー５２が操作されると、図３０に示すステップＳ３１３から図３２に示すステップＳ３２９に進み、変数ｌｏｏｐを“０”に設定する。変数ｌｏｏｐは、カーソルＣＳの表示位置をリング状に移動させるべきかどうかを示す変数である。“０”はリング状の移動が不要であることを示し、“１”はリング状の移動が必要であることを示す。ステップＳ３３１では、変数ｃｎｔ１の数値を判別する。変数ｃｎｔ１が“０”よりも大きければ、カーソルＣＳは上方に移動可能であるとみなし、ステップＳ３３７で変数ｃｎｔ１をディクリメントする。ステップＳ３３９では変数ｍｏｄｅを“１”に設定し、ステップＳ３４１ではカーソルＣＳが上方に移動させるべくメニュー表示処理を行う。ステップＳ３４３では、変数ｔｒｅｅ＿ｎｕｍの数値を判別する。変数ｔｒｅｅ＿ｎｕｍが“−１”であればメニュー表示処理にエラーが生じたとみなしてステップＳ３３１に戻り、変数ｔｒｅｅ＿ｎｕｍが“０”以上であればメニュー表示処理が適切に実行されたとみなしてステップＳ３１１に戻る。
【０１１８】
ステップＳ３３１でＮＯと判断されたときは、ステップＳ３３３で変数ｌｏｏｐの値を判別する。そして、変数ｌｏｏｐが“１”であればエラー処理を実行するが、変数ｌｏｏｐが“０”であれば、ステップＳ３３５で変数ｌｏｏｐを“１”に更新し、かつ変数ｃｎｔ１を閾値ＭＡＸ＿ＮＵＭ−１に設定する。ステップＳ３３５の処理が完了するとステップＳ３４１に進み、カーソルＣＳを画面の最下欄に移動させるべく、メニュー表示処理を行う。
【０１１９】
ダウンキー５４が操作されたときは、図３０に示すステップＳ３１５でＹＥＳと判断し、図３３に示すステップＳ３４５〜Ｓ３５９の処理を実行する。ただし、この一連の処理は、ステップＳ３４７で変数ｃｎｔ１を閾値ＭＡＸ＿ＮＵＭ−１と比較する点、ステップＳ３５３で変数ｃｎｔ１をインクリメントする点、ならびにステップＳ３５１で変数ｃｎｔ１を“０”に設定する点を除き、上述のステップＳ３２９〜Ｓ３４３と同様であるため、重複した説明は省略する。
【０１２０】
セットキー５０が操作されたときは、図３０に示すステップＳ３１７でＹＥＳと判断し、図３４に示すステップＳ３６１に進む。ステップＳ３６１では、大項目メニューおよび枝メニューのいずれが画面に表示されているかを変数ｃｎｔ０に基づいて判別する。変数ｃｎｔ１が“０”であれば、大項目メニューが表示されているとみなし、ステップＳ３６３以降で大項目メニューを枝メニューに更新する処理を行う。
【０１２１】
まずステップＳ３６３で、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｃｎｔ１］に含まれるＧＵＩ＿ＰＲＯＰＥＲＴＹの識別子を判別する。この識別子が“項目ロック”を示していれば、そのままステップＳ３１１に戻る。この結果、今回のセットキー５０の操作は無効とされ、大項目メニューが表示され続ける。識別子が“項目未選択”または“項目選択済み”を示していれば、ステップＳ３６５に進み、枝メニューの表示を意味する“１”を変数ｃｎｔ０に設定し、変数ｃｎｔ１が示す数値を変数ｂａｃｋ＿ｃｎｔ１に退避させる。
【０１２２】
ステップＳ３６７では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｂａｃｋ＿ｃｎｔ１］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第２バイト値を参照して、これから表示する枝メニューに選択済みの小項目が存在するかどうかを判別する。この第２バイト値が“０”以上であれば、選択済みの小項目が存在するとみなし、ステップＳ３７１でこの第２バイト値を変数ｃｎｔ１に設定する。これに対して、第２バイト値が“−１”であれば、選択済みの小項目は存在しないとみなして、ステップＳ３６９で変数ｃｎｔ１を“０”に設定する。ステップＳ３７３では変数ｍｏｄｅを“１”に設定し、ステップＳ３７５ではメニュー表示処理を行う。
【０１２３】
したがって、図７（Ｂ）に示すようにカーソルＣＳを“楽器分類”に合わせた状態でセットキー５０を操作すると、画面表示は図８（Ｂ）に遷移する。つまり、“楽器分類”に属する小項目はいずれも未選択であるため、カーソルＣＳは先頭の“弦楽器”に合わせられる。これに対して、図９（Ａ）に示す“木管楽器”にカーソルＣＳを合わせた状態でセットキー５０を操作すると、画面表示は図８（Ｂ）に遷移する。つまり、“楽器分類”に属する小項目である“木管楽器”が選択済みであるため、カーソルＣＳは、“木管楽器”に合わせられる。ステップＳ３７５の処理が完了すると、ステップＳ３１１に戻る。
【０１２４】
ステップＳ３６１でＮＯと判断されると、画面には枝メニューが表示されているとみなし、図３５に示すステップＳ３７７以降で大項目メニューに復帰する処理を行う。まずステップＳ３７７で、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｂａｃｋ＿ｃｎｔ１］に含まれるＧＵＩ＿ＰＲＯＰＥＲＴＹに“項目選択済み”を示す識別子を記述する。続くステップＳ３７９では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｂａｃｋ＿ｃｎｔ１］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第２バイト値が変数ｃｎｔ１に等しいかどうかを判別する。
【０１２５】
ＧＵＩ＿ＭＥＭＢＥＲの第２バイト値と変数ｃｎｔ１とが互いに一致するときは、選択済みの小項目が再度選択されたとみなし、ステップＳ３７９からステップＳ３８１に進む。ステップＳ３８１では、変数ｂａｃｋ＿ｃｎｔ１を変数ｃｎｔ１に設定し、変数ｃｎｔ０を“０”に設定する。ステップＳ３８３では変数ｍｏｄｅを“１”に設定する。ステップＳ３８３の処理が完了すると、ステップＳ３８５でメニュー表示処理を行う。
【０１２６】
たとえば、図９（Ａ）に示す大項目メニューから図８（Ｂ）に示す枝メニューに遷移して“木管楽器”を再度選択した場合、ＧＵＩ＿ＭＥＭＢＥＲの第２バイト値は変数ｃｎｔ１と一致する。このとき、ステップＳ３８１〜Ｓ３８５の処理が実行される。画面表示は、図８（Ｂ）に示す枝メニューから図９（Ａ）に示す大項目メニューに戻る。
【０１２７】
ＧＵＩ＿ＭＥＭＢＥＲの第２バイト値と変数ｃｎｔ１とが互いに不一致であれば、未選択の小項目が選択されたとみなして、ステップＳ３７９からステップＳ３８７に進む。ステップＳ３８７では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｂａｃｋ＿ｃｎｔ１］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第１バイトおよび第２バイトに、変数ｔｒｅｅ＿ｎｕｍおよびｃｎｔ１をそれぞれ設定する。たとえば、図９（Ａ）に示す大項目メニューから図９（Ｂ）に示す枝メニューに遷移して“金管楽器”を選択した場合、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第１バイトおよび第２バイトに枝メニュー番号“０”および小項目番号“２”が記述される。
【０１２８】
ただし、未選択の小項目を選択することによって、大項目メニュー上に表示すべき項目数が変化する可能性がある。たとえば、図９（Ｂ）に示す大項目メニューから図１０（Ａ）に示す枝メニューに遷移して“フルート”を選択すると、図１１（Ａ）に示すように大項目メニューの項目数が増加する。また、図１１（Ａ）に示す大項目メニューから図８（Ｂ）に示す枝メニューに遷移し、“金管楽器”を選択すると、図９（Ａ）に示すように（ただし、“木管楽器”に代えて“金管楽器”が表示）大項目メニューの項目数が減少する。このため、ステップＳ３９１以降で依存関係を検証する処理を実行する。
【０１２９】
まずステップＳ３８９で変数ｉを“０”に設定し、ステップＳ３９１で変数ｉをＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］に含まれるＬＡＮ＿ＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｎと比較する。そして、変数ｉが数値Ｎを下回る限りステップＳ３９３〜Ｓ４２５の処理を繰り返し、変数ｉが数値Ｎに達すると、ステップＳ３８１に進む。
【０１３０】
ステップＳ３９３では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］の＊ＧＵＩ＿ＬＩＮＫＡＤＲに記述されたアドレス値を変数ｍｅｎｕ＿ｔｂｌとして設定する。これによって、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に属するメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｋ−１］が注目される。
【０１３１】
ステップＳ３９５では変数ｊを“０”に設定し、ステップＳ３９７では変数ｊをＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｉと比較し、そしてステップＳ４０１ではメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に含まれるｔｒｅｅ＿ｍａｘｎｕｍが示す数値Ｌを判別する。
【０１３２】
変数ｊが数値Ｉ以上のときは、ステップＳ３９７からステップＳ３９９に進む。ステップＳ３９９では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＳＥＬＥＣＴに“選択不可”の識別子を記述し、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＰＲＯＰＥＲＴＹに“項目未選択”の識別子を記述し、そしてＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第１バイトおよび第２バイトに“−１”を記述する。ステップＳ３９９の処理が完了すると、ステップＳ４０３で変数ｉをインクリメントしてからステップＳ３９１に戻る。なお、ステップＳ３９９の処理は、後段のステップＳ４２３の処理と合わせて説明する。
【０１３３】
変数ｊが数値Ｉ未満でかつ数値Ｌが“０”を示していれば、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］の下にはメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］が存在するものの、このメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］の下にはツリーテーブルは存在しないとみなし、ステップＳ４０１でＹＥＳと判断する。そして、ステップＳ４０３で変数ｉをインクリメントしてステップＳ３９１に戻る。たとえば、図９（Ａ）に示す“音楽ジャンル”にはいずれのツリーテーブルも存在しないため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］に注目したときは、ステップＳ４０１でＹＥＳと判断される。
【０１３４】
変数ｊが数値Ｉ未満でかつ数値Ｌが“１”以上であれば、ステップＳ４０１からステップＳ４０５に進み、メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に含まれる＊ｔｒｅｅ＿ｔａｂｌｅのアドレス値を変数ｔｒｅｅ＿ｔｂｌに設定する。これによって、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］の下のメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に属する＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］が注目される。
【０１３５】
ステップＳ４０７では変数ｋを“０”に設定し、ステップＳ４０９では変数ｋをメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に含まれるｔｒｅｅ＿ｍａｘｎｕｍが示す数値Ｌと比較する。そして、変数ｋが数値Ｌに達したときはステップＳ４１１で変数ｊをインクリメントしてステップＳ３９７に戻るが、変数ｋが数値Ｌ未満であればステップＳ４１３以降の処理を実行する。
【０１３６】
ステップＳ４１３およびＳ４１５では、メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｊ］に属するツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］とこのツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］を管理するＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］とに注目し、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］  のｇｕｉ＿ｔｒｅｅとＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］のＧＵＩ＿ＭＥＭＢＥＲとの間で比較を行う。具体的には、ｇｕｉ＿ｔｒｅｅの第１バイト値とＧＵＩ＿ＭＥＭＢＥＲの第１バイト値とをステップＳ４１３で比較し、ｇｕｉ＿ｔｒｅｅの第２バイト値とＧＵＩ＿ＭＥＭＢＥＲの第２バイト値とをステップＳ４１５で比較する。
【０１３７】
そして、第１バイト値および第２バイト値の少なくとも一方が互いに不一致であれば、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］はＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］に依存しているとみなし、ステップＳ４１７で変数ｋをインクリメントしてステップＳ４０９に戻る。これに対して、第１バイト値および第２バイト値の両方が互いに一致すれば、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］はＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］に依存しているとみなし、ステップＳ４１９に進む。たとえば、図９（Ａ）に示す大項目メニューでは、“木管楽器”の選択によってＧＵＩテーブル＜ｇｕｉｔｂｌ＞［１］のＧＵＩ＿ＭＥＭＢＥＲに枝メニュー番号“０”および小項目番号“１”が記述される。このため、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［２］に属するツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［１］に注目したときに、ステップＳ４１９に進む。
【０１３８】
ステップＳ４１９では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＳＥＬＥＣＴに“選択可”を示す識別子を記述する。ここで、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］はＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］と同じテーブルであり、“選択可”を示す識別子は、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］が依存するＧＵＩテーブルのＧＵＩ＿ＳＥＬＥＣＴに記述される。
【０１３９】
ステップＳ４２１では、ツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［ｋ］に含まれるｇｕｉ＿ｔｒｅｅの第０バイト値が変数ｂａｃｋ＿ｃｎｔ１に等しいかどうか判断する。そして、ＹＥＳであれば、ステップＳ４２３に進み、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第１バイトおよび第２バイトに“−１”を設定するとともに、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＰＲＯＰＥＲＴＹに“項目未選択”の識別子を記述する。ステップＳ４２３の処理が完了すると、ステップＳ４２５で変数ｉをインクリメントしてからステップＳ３９１に戻る。これに対して、ステップＳ４２１でＮＯと判断されると、ステップＳ４２３を経ることなくステップＳ４２５で変数ｉをインクリメントし、その後ステップＳ３９１に戻る。
【０１４０】
ステップＳ３９９およびＳ４２３が処理されるのは、たとえば図９（Ｂ）に示す大項目メニューの“木管楽器”を“金管楽器”に変更したときである。つまり、図９（Ｂ）に示す大項目メニューから図８（Ｂ）に示す枝メニューに遷移し、“金管楽器”にカーソルＣＳを合わせてセットキー５０を操作すると、ステップＳ３９９およびＳ４２３の処理が実行される。具体的には、“材質”，“材料”および“表面処理”の文字列を非表示とするべくステップＳ３９９の処理が実行され、“フルート”を“楽器名”に変更するべくステップＳ４２３の処理が実行される。なお、“木管楽器”の“金管楽器”への変更処理は、ステップＳ３８７によって行われる。
【０１４１】
ステップＳ３０３，Ｓ３２３，Ｓ３２７，Ｓ３４１，Ｓ３５７，Ｓ３７５またはＳ３８５におけるメニュー表示処理は、図３８〜図４３に示すサブルーチンに従う。
【０１４２】
図３８を参照して、ステップＳ５０１では変数ｔｒｅｅ＿ｎｕｍを“０”に設定し、ステップＳ５０３では変数ｍｏｄｅが示す数値を判別する。変数ｍｏｄｅが“−１”であれば、つまり変数ｍｏｄｅがメニュー画面のクリアを意味していれば、ステップＳ５０３でＹＥＳと判断し、ステップＳ５０５で変数ｐｒｅ＿ｃｎｔ１およびｐｒｅ＿ｃｎｔ２を“０”に設定するとともに、ステップＳ５０７でメニュー画面をクリアする。ステップＳ５０７の処理が完了すると、上階層のルーチンに復帰する。変数ｍｏｄｅが“１”であれば、つまり変数ｍｏｄｅがメニュー画面の描画を意味していれば、ステップＳ５０３からステップＳ５０９に進み、変数ｃｎｔ０が示す数値を判別する。変数ｃｎｔ０が“０”であれば、つまり変数ｃｎｔ０が大項目メニューの表示を意味していれば、ステップＳ５１１に進む。これに対して、変数ｃｎｔ０が“１”であれば、つまり変数ｃｎｔ０が枝メニューの表示を意味していれば、ステップＳ５５５に進む。
【０１４３】
ステップＳ５１１ではＬＡＮテーブル＜ｌａｎｔａｂｌｅ＞［０］に含まれるＬＡＮ＿ＧＵＩ＿ＭＵＸＮＵＭが示す数値Ｎを変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍとして設定し、続くステップＳ５１３では変数ｋおよびｉを“０”に設定する。ステップＳ５１５では、変数ｉを変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍつまり数値Ｎと比較し、変数ｉが数値Ｎに達するまでステップＳ５１７〜Ｓ５２９の処理を繰り返す。
【０１４４】
ステップＳ５１７では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＶＩＳＩＢＬＥの識別子を判別する。識別子が“表示不可”を示すときはそのままステップＳ５２９に進み、変数ｉのインクリメントを経てステップＳ５１５に戻る。識別子が“表示可”を示すときは、ステップＳ５１９でＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＰＲＯＰＥＲＴＹの識別子を判別する。この識別子が“項目未選択”を示すときはステップＳ５２１に進み、この識別子が“項目選択済み”または“項目ロック”を示すときは、ステップＳ５２３に進む。
【０１４５】
ステップＳ５２１では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれる＊ＧＵＩ＿ＴＡＢＬＥによって特定される大項目文字列を文字列データＧＵＩＣＯＮＦ０．ＤＡＴから抽出し、抽出した文字列をレジスタｄｉｓｐ＿ｓｔｒ［ｋ］に格納する。これによって、大項目文字列が表示可能状態となる。処理が完了すると、ステップＳ５２７で変数ｋをインクリメントし、かつステップＳ５２９で変数ｉをインクリメントしてからステップＳ５１５に戻る。
【０１４６】
ステップＳ５２３では、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれる＊ＧＵＩ＿ＬＩＮＫＡＤＲのアドレス値を変数ｍｅｎｕ＿ｔｂｌとして設定し、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第１バイト値を変数ｔｒｅｅ＿ｎｕｍとして設定し、そして枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｔｒｅｅ＿ｎｕｍ］に含まれる＊ｓｔｒ＿ｔａｂｌｅのアドレス値を変数ｍｅｎｕ＿ｓｔｒとして設定する。これによって、選択された小項目を管理する枝メニューテーブルの下のメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］が注目される。
【０１４７】
ステップＳ５２５では、注目するメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］の中からＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｉ］に含まれるＧＵＩ＿ＭＥＭＢＥＲの第２バイト値に対応するメニューストリングを特定し、特定したメニューストリングに含まれるｍ＿ｓｔｒｉｎｇによって特定される小項目文字列を文字列データＧＵＩＣＯＮＦ０．ＤＡＴから抽出し、そして抽出した文字列をレジスタｄｉｓｐ＿ｓｔｒ［ｋ］に格納する。これによって、選択された小項目の文字列が表示可能状態となる。処理が完了すると、ステップＳ５２７で変数ｋをインクリメントし、かつステップＳ５２９で変数ｉをインクリメントしてからステップＳ５１５に戻る。
【０１４８】
ステップＳ５１５でＮＯと判断されると、ステップＳ５３１〜Ｓ５３５でエラーチェックを行う。ステップＳ５３１では、変数ｃｎｔ１が変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍ以上であるかどうか、つまりカーソルＣＳの位置に異常があるかどうかを判別する。ステップＳ５３３では、変数ｃｎｔ０が大項目メニューの表示を意味する“０”であり、かつＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｃｎｔ１］に含まれるＧＵＩ＿ＳＥＬＥＣＴが“選択不可”の識別子を有するかどうかを判別する。ステップＳ５３５では、＜ｇｕｉｔｂｌ＞［ｃｎｔ１］に含まれるＧＵＩ＿ＶＩＳＩＢＬＥが“表示不可”の識別子を有するかどうかを判別する。
【０１４９】
ステップＳ５３１〜Ｓ５３５のいずれか１つでもＹＥＳと判断されると、エラーが生じているとみなして、ステップＳ５３７で変数ｔｒｅｅ＿ｎｕｍを“−１”に設定してから上階層のルーチンに復帰する。これに対して、ステップＳ５３１〜Ｓ５３５の全てにおいてＮＯと判断されると、エラーは生じていないとみなして、ステップＳ５３９に進む。
【０１５０】
ステップＳ５３９では変数ｉを“０”に設定し、ステップＳ５４１では変数ｉを変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍと比較する。変数ｉが変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍに満たなければ、ステップＳ５４３に進み、レジスタｄｉｓｐ＿ｓｔｒ［ｉ］に格納された文字列を画面のｉ行目に表示する。表示処理が完了すると、ステップＳ５４５で変数ｉをインクリメントしてからステップＳ５４１に戻る。変数ｉが変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍに達すると、ステップＳ５４７に進み、ｃｎｔ１行目の文字列を指向するようにカーソルＣＳを表示する。
【０１５１】
ステップＳ５４９では変数ｃｎｔ０が示す数値を判別する。ここで、変数ｃｎｔ０が“０”であれば、つまり変数ｃｎｔ０が大項目メニューの表示を意味していれば、ステップＳ５５１で変数ｃｎｔ１を変数ｐｒｅ＿ｃｎｔ１に設定し、ステップＳ５５３で変数ｃｎｔ０を変数ｐｒｅ＿ｃｎｔ０に設定する。これに対して、変数ｃｎｔ０が“１”であれば、つまり変数ｃｎｔ０が枝メニューの表示を意味していれば、ステップＳ５５１を経ることなく、ステップＳ５５３で変数ｃｎｔ０を変数ｐｒｅ＿ｃｎｔ０に設定する。ステップＳ５５３の処理が完了すると、上階層のルーチンに復帰する。
【０１５２】
図３８に示すステップＳ５０９でＮＯと判断されたときは、枝メニューを表示するべく、図４２に示すステップＳ５５５に進む。このステップでは、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｐｒｅ＿ｃｎｔ１］に含まれる＊ＧＵＩ＿ＬＩＮＫＡＤＲのアドレス値を変数ｍｅｎｕ＿ｔｂｌとして設定する。これによって、ＧＵＩテーブル＜ｇｕｉｔｂｌ［ｐｒｅ＿ｃｎｔ１］＞に属する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ［０］＞〜＜ｍｅｎｕ＿ｔｂｌ［Ｎ−１］＞が注目される。ステップＳ５５７では変数ｉを“０”に設定し、ステップＳ５５９では変数ｉをＧＵＩテーブル＜ｇｕｉｔｂｌ［ｐｒｅ＿ｃｎｔ１］＞に含まれるＧＵＩ＿ＭＡＸＮＵＭが示す数値Ｉと比較する。そして、変数ｉが数値Ｉを下回ればステップＳ５６３以降の処理を実行するが、変数ｉが数値Ｉに達すれば、エラーが生じたとみなして、ステップＳ５６１で変数ｔｒｅｅ＿ｎｕｍを“−１”に設定してから上階層のルーチンに復帰する。
【０１５３】
ステップＳ５６３では、注目する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ［ｉ］＞のｔｒｅｅ＿ｍａｘｎｕｍが示す数値Ｌを判別する。数値Ｌが“０”であれば、注目する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ［ｉ］＞の下にはツリーテーブルは全く存在しないとみなし、そのままステップＳ５７７に進む。数値Ｌが“１”以上であれば、注目する枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］の下にツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］が存在するとみなし、選択された枝メニューに依存するツリーテーブルを検索するべく、ステップＳ５６５に進む。
【０１５４】
ステップＳ５６５では、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］に含まれる＊ｔｒｅｅ＿ｔａｂｌｅのアドレス値を変数ｔｒｅｅ＿ｔｂｌとして設定する。これによって、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］に属するツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］が注目される。ステップＳ５６７では変数ｊを“０”に設定し、ステップＳ５６９では変数ｊを枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］のｔｒｅｅ＿ｍａｘｎｕｍが示す数値Ｌと比較する。変数ｊが数値Ｌに達したときはステップＳ５７１で変数ｉをインクリメントしてステップＳ５５９に戻るが、変数ｊが数値Ｌを下回るときは、ステップＳ５７３およびＳ５７５で上述のステップＳ４１３およびＳ４１５と同様の処理を行う。
【０１５５】
ステップＳ５７３およびＳ５７５のいずれか一方でもＮＯと判断されると、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｊ］はＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｊ］．  ｇｕｉ＿ｔｒｅｅ［０］］に依存していないとみなし、ステップＳ５７７で変数ｊをインクリメントしてステップＳ５６９に戻る。これに対して、ステップＳ５７３およびＳ５７５の両方でＹＥＳと判断されると、ツリーテーブルｔｒｅｅ＿ｔｂｌ［ｋ］はＧＵＩテーブル＜ｇｕｉｔｂｌ＞［ｔｒｅｅ＿ｔｂｌ［ｋ］．  ｇｕｉ＿ｔｒｅｅ［０］］に依存しているとみなし、ステップＳ５７９に進む。
【０１５６】
ステップＳ５７９では、選択された枝メニューの番号を有効化するべく、変数ｉを変数ｔｒｅｅ＿ｎｕｍに設定する。ステップＳ５８１では、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］に含まれる＊ｓｔｒ＿ｔａｂｌｅのアドレス値を変数ｍｅｎｕ＿ｓｔｒとして設定し、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］のｓｔｒ＿ｍａｘｎｕｍが示す数値Ｋを変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍとして設定する。これによって、枝メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［ｉ］に属するメニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［０］〜＜ｍｅｎｕ＿ｓｔｒ＞［Ｋ−１］が注目される。
【０１５７】
ステップＳ５８３では変数ｉを“０”に設定し、ステップＳ５８５では変数ｉを変数ｍａｘ＿ｍｅｎｕ＿ｎｕｍつまり数値Ｋと比較する。変数ｉが数値Ｋ未満のときはステップＳ５８７に進み、メニューストリング＜ｍｅｎｕ＿ｓｔｒ＞［ｉ］の＊ｍｅｎｕ＿ｓｔｒｉｎｇによって特定される文字列をレジスタｄｉｓｐ＿ｓｔｒ［ｉ］に格納する。この処理を終えると、ステップＳ５８９で変数ｉをインクリメントしてステップＳ５８５に戻る。変数ｉが数値Ｋに達すると、ステップＳ５３１に進む。
【０１５８】
以上の説明から分かるように、ＣＰＵ４４によって読み取られる表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬは、複数のＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］とその各々に属する複数のメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］とを備える。ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］は、ＣＰＵ４４によって表示処理を施される複数の大項目をそれぞれ管理する。また、メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々は、ＣＰＵ４４によって表示処理を施される複数の小項目を管理する。
【０１５９】
メニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々には、自分が属するＧＵＩテーブルと異なるＧＵＩテーブルの下で管理される小項目との依存関係を示すツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］が割り当てられる。所望の小項目が選択されると、ＣＰＵ４４は、このツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］に基づいて、所望の小項目に依存する複数の小項目を表示する。
【０１６０】
このように、ツリーテーブル＜ｔｒｅｅ＿ｔｂｌ＞［０］〜＜ｔｒｅｅ＿ｔｂｌ＞［Ｌ−１］がメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］の各々に割り当てられるため、ＣＰＵ４４は、小項目を的確に画面に表示することができる。つまり、ディジタルカメラ１０は異なるメニュー画像を共通の手順で画面に表示することができる。
【０１６１】
また、所望の小項目を表す枝メニュー番号および小項目番号つまり所望小項目番号が、所望の小項目を管理するＧＵＩテーブルにＧＵＩ＿ＭＥＭＢＥＲとして記述される。ＣＰＵ４４は、かかる所望小項目情報に基づいて、所望の小項目に対応する大項目の代わりに所望の小項目を表示する。これによって、いずれの小項目が選択されたかを容易に把握することができ、操作性が向上する。なお、メニューテーブルには複数のツリーテーブルを割り当てることができ、これによってメニューテーブルの総数ひいてはデータサイズの抑制が可能となる。
【０１６２】
さらに、所望の小項目の選択が解除されると、ＧＵＩ＿ＭＥＭＢＥＲに記述された枝メニュー番号および小項目番号が、項目未選択を示す“−１”に切り換えられる。プロセサは、かかる小項目未選択情報に基づいて、所望の小項目の代わりに所望の小項目に対応する大項目を表示する。
【０１６３】
さらにまた、所望の小項目が選択されていないメニューテーブルの小項目に依存するメニューテーブルが属するＧＵＩテーブルのＧＵＩ＿ＳＥＬＥＣＴに、“選択不可”を示す識別子つまり選択不可情報が記述される。ＣＰＵ４４は、かかる選択不可情報が割り当てられたＧＵＩテーブルが管理する大項目の表示を中止する。これによって、未選択の小項目に関連する大項目の表示が中止され、操作性が向上する。
【０１６４】
また、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］の各々に属する複数のメニューテーブル＜ｍｅｎｕ＿ｔｂｌ＞［０］〜＜ｍｅｎｕ＿ｔｂｌ＞［Ｉ−１］は連続し、ＧＵＩテーブル＜ｇｕｉｔｂｌ＞［０］〜＜ｇｕｉｔｂｌ＞［Ｎ−１］の各々には＊ＧＵＩ＿ＬＩＮＫＡＤＲおよびＧＵＩ＿ＭＡＸＮＵＭが記述される。これによって、メニューテーブル毎にアドレス情報を記述する必要がなくなり、データサイズの抑制が可能となる。
【０１６５】
なお、この実施例では、メモリカード３８および通信カード４０がスロット３６に選択的に装着されるが、デュアルスロットを用意すれば、メモリカード３８および通信カード４０を同時に装着できる。また、通信機能付きメモリカードを用意すれば、単一のスロットでメモリ機能および通信機能を同時に実現できる。
【０１６６】
また、この実施例では、表示制御テーブルＧＵＩＣＯＮＦ０．ＴＢＬおよび文字列データＧＵＩＣＯＮＦ０．ＤＡＴ、ならびに通信不能時の画像ファイルを内蔵型のフラッシュメモリ４２に格納するようにしている。しかし、上述のデュアルスロットを用意すれば、これらのデータはメモリカード３８に格納してもよく、通信機能付きメモリカードを用意すれば、これらのデータは通信機能付きメモリカードに格納してもよい。
【０１６７】
さらに、この実施例では、楽器の製作現場の詳細情報を入力するのに適したメニュー画像を想定しているが、これに代えてビルの建設現場の詳細情報を入力するためのメニュー画像を用意すれば、建設会社向けのディジタルカメラが得られる。また、交通事故現場の詳細情報を入力するためのメニュー画像を用意すれば、損害保険会社向けのディジタルカメラが得られる。
【０１６８】
また、この実施例では、ディジタルカメラを用いて説明したが、この発明は、メニュー画像を表示するあらゆる電子機器に適用できることは言うまでもない。
【図面の簡単な説明】
【図１】この発明の一実施例を示すブロック図である。
【図２】図１実施例に適用されるメニュー構造の一部を示す図解図である。
【図３】図１実施例に適用されるメニュー構造の他の一部を示す図解図である。
【図４】図１実施例に適用されるメニュー構造のその他の一部を示す図解図である。
【図５】メニュー構造を形成する要素の名称を記述した図解図である。
【図６】画面表示の遷移の一例を示す図解図である。
【図７】（Ａ）は画面に表示されるメニューの一例を示す図解図であり、（Ｂ）は画面に表示されるメニューの他の一例を示す図解図である。
【図８】（Ａ）は画面に表示されるメニューのその他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューのさらにその他の一例を示す図解図である。
【図９】（Ａ）は画面に表示されるメニューの他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューのその他の一例を示す図解図である。
【図１０】（Ａ）は画面に表示されるメニューのさらにその他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューの他の一例を示す図解図である。
【図１１】（Ａ）は画面に表示されるメニューのその他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューのさらにその他の一例を示す図解図である。
【図１２】（Ａ）は画面に表示されるメニューの他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューのその他の一例を示す図解図である。
【図１３】（Ａ）は画面に表示されるメニューのさらにその他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューの他の一例を示す図解図である。
【図１４】（Ａ）は画面に表示されるメニューのその他の一例を示す図解図であり、（Ｂ）は画面に表示されるメニューのさらにその他の一例を示す図解図である。
【図１５】図２〜図４に示すメニュー構造に対応する表示制御テーブルの一例を示す図解図である。
【図１６】図１５に示す表示制御テーブルの構造の一例を示す図解図である。
【図１７】図２〜図４に示すメニュー構造に対応する文字列データの一例を示す図解図である。
【図１８】図１実施例に適用されるＳＤＲＡＭのマッピング状態の一例を示す図解図である。
【図１９】図１実施例に適用されるフラッシュメモリのマッピング状態の一例を示す図解図である。
【図２０】図１実施例の動作の一部を示すフロー図である。
【図２１】図１実施例の動作の他の一部を示すフロー図である。
【図２２】図１実施例の動作のその他の一部を示すフロー図である。
【図２３】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図２４】図１実施例の動作の他の一部を示すフロー図である。
【図２５】図１実施例の動作のその他の一部を示すフロー図である。
【図２６】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図２７】図１実施例の動作の他の一部を示すフロー図である。
【図２８】図１実施例の動作のその他の一部を示すフロー図である。
【図２９】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図３０】図１実施例の動作の他の一部を示すフロー図である。
【図３１】図１実施例の動作のその他の一部を示すフロー図である。
【図３２】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図３３】図１実施例の動作の他の一部を示すフロー図である。
【図３４】図１実施例の動作のその他の一部を示すフロー図である。
【図３５】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図３６】図１実施例の動作の他の一部を示すフロー図である。
【図３７】図１実施例の動作のその他の一部を示すフロー図である。
【図３８】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図３９】図１実施例の動作の他の一部を示すフロー図である。
【図４０】図１実施例の動作のその他の一部を示すフロー図である。
【図４１】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図４２】図１実施例の動作の他の一部を示すフロー図である。
【図４３】図１実施例の動作のその他の一部を示すフロー図である。
【符号の説明】
１０…ディジタルカメラ
１２…イメージセンサ
２０…メモリコントローラ
２２…ＳＤＲＡＭ
２４…ＪＰＥＧコーデック
３０…ＬＣＤ
３２…キャラクタジェネレータ
４０…通信カード
４２…フラッシュメモリ
４４…ＣＰＵ
【図１】
2004264883.tif 000003
【図２】
2004264883.tif 000004
【図３】
2004264883.tif 000005
【図４】
2004264883.tif 000006
【図５】
2004264883.tif 000007
【図６】
2004264883.tif 000008
【図７】
2004264883.tif 000009
【図８】
2004264883.tif 000010
【図９】
2004264883.tif 000011
【図１０】
2004264883.tif 000012
【図１１】
2004264883.tif 000013
【図１２】
2004264883.tif 000014
【図１３】
2004264883.tif 000015
【図１４】
2004264883.tif 000016
【図１５】
2004264883.tif 000017
【図１６】
2004264883.tif 000018
【図１７】
2004264883.tif 000019
【図１８】
2004264883.tif 000020
【図１９】
2004264883.tif 000021
【図２０】
2004264883.tif 000022
【図２１】
2004264883.tif 000023
【図２２】
2004264883.tif 000024
【図２３】
2004264883.tif 000025
【図２４】
2004264883.tif 000026
【図２５】
2004264883.tif 000027
【図２６】
2004264883.tif 000028
【図２７】
2004264883.tif 000029
【図２８】
2004264883.tif 000030
【図２９】
2004264883.tif 000031
【図３０】
2004264883.tif 000032
【図３１】
2004264883.tif 000033
【図３２】
2004264883.tif 000034
【図３３】
2004264883.tif 000035
【図３４】
2004264883.tif 000036
【図３５】
2004264883.tif 000037
【図３６】
2004264883.tif 000038
【図３７】
2004264883.tif 000039
【図３８】
2004264883.tif 000040
【図３９】
2004264883.tif 000041
【図４０】
2004264883.tif 000042
【図４１】
2004264883.tif 000043
【図４２】
2004264883.tif 000044
【図４３】
2004264883.tif 000045