Treo 600 の 5-Way Navigation に関して。
#contents

*5-Way Rocker 有無の判断
「Treo600_Developer_Reference_Guide」より
 UInt32 val;
 
 if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &val) == errNone)
 {
  // 5-Way Rocker あり
 }
~
※下の方法は使えない(エラーとなる)。
 if (FtrGet (sysFileCSystem, sysFtrNumUIHardwareFlags, &val) == errNone)
 {
  if (val & sysFtrNumUIHardwareHas5Way)
   // 5-Way Rocker あり
 }

*‘fnav’リソースの定義
-5-Way Navigationを有効にするには、formNavRscType (‘fnav’)というリソースをフォーム毎に追加する必要がある。
-ただし、モーダルフォームには追加しなくても良さそう。
-サンプルコード「HsNavSample」が参考になる。

**書式

-ヘッダー

 UInt16 version;                  // APIのバージョン (=1)
 UInt16 numberOfObjects;          // オブジェクトの数
 UInt16 headerElementSizeInBytes; // ヘッダーサイズ (=20)
 UInt16 listElementSizeInBytes;   // リストの要素サイズ (=8)
 UInt32 navFlags;                 // フォーカスモード...FrmNavHeaderFlagsAutoGeneratedなど
 UInt16 initialObjectIDHint;      // 最初にフォーカスされるオブジェクトのID
 UInt16 jumpToObjectIDHint;       // 未使用
 UInt16 bottomLeftObjectIDHint;   // 未使用
 UInt16 padding;                  // ?

-以下はオブジェクトの数(numberOfObjects)だけ繰り返し
-順番は左上から右下へ向かって横に移動(が良いと思う)。

 UInt16 objectID;                 // オブジェクトのID
 UInt16 objectFlags;              // フラッグ...none(0)で特に問題なし
 UInt16 aboveObjectID;            // 1つ上のオブジェクトID(前のではない)
 UInt16 belowObjectID;            // 1つ下のオブジェクトID(後のではない)

**CodeWarriorでの定義
-[PilRC:http://www.ardiri.com/index.php?redir=palm&cat=pilrc] 用フォーマットで、上記リソースを作成する。
-拡張子は「.rcp」。
-入力する数値はHEX(16進数)。
-サンプル

 HEX "fnav" ID ListView
 0x00 0x01
 0x00 0x0b
 0x00 0x14
 0x00 0x08
 0x80 0x00 0x00 0x00
 0x03 0xf2
 0x03 0xf2
 0x03 0xea
 0x00 0x00
 
 0x03 0xfc
 0x00 0x00
 0x00 0x00
 0x03 0xf2
 
 ...以下オブジェクトの数だけ繰り返し(この場合11個)

-このファイルをプロジェクトに加えて、他のものと一緒にコンパイルする。

*プログラム内の処理