Treo 600 の 5-Way Navigation に関して。
KeyDownEventで発行されるchrは、
UInt32 val; if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &val) == errNone) // 5-Way Rocker あり
※下の方法は使えない(エラーとなるため判定できない)。
if (FtrGet (sysFileCSystem, sysFtrNumUIHardwareFlags, &val) == errNone) { if (val & sysFtrNumUIHardwareHas5Way) // 5-Way Rocker あり }
最も使うと思われる関数
ソニーのジョグアシストのように、5-Way Rocker での操作をシステムがアシストしてくれる機能がある。モーダルフォーム以外でこれを利用するには、設定が必要。
プログラム内で、関数を使って記述する方法。
FrmSetNavState (frmP, stateFlags)
FrmSetNavEntry (formP, targetObjectID, afterObjectID, aboveObjectID, belowObjectID, objectFlags)
FrmSetNavOrder (formP, navHeaderP, navOrderP)
モードをリソースとして定義する方法。
UInt16 version; // APIのバージョン (=1) UInt16 numberOfObjects; // オブジェクトの数 UInt16 headerElementSizeInBytes; // ヘッダーサイズ (=20) UInt16 listElementSizeInBytes; // リストの要素サイズ (=8) UInt32 navFlags; // フォーカスモード ※1 UInt16 initialObjectIDHint; // 最初にフォーカスされるオブジェクトのID UInt16 jumpToObjectIDHint; // 未使用 UInt16 bottomLeftObjectIDHint; // 未使用 UInt16 padding; // ?
UInt16 objectID; // オブジェクトのID UInt16 objectFlags; // フラッグ ※2 UInt16 aboveObjectID; // 1つ上のオブジェクトID(前のではない) UInt16 belowObjectID; // 1つ下のオブジェクトID(後のではない)
※1 navFlags に関して
※2 objectFlags に関して
HEX "fnav" ID ListView 0x00 0x01 0x00 0x0b 0x00 0x14 0x00 0x08 0x00 0x00 0x00 0x02 0x03 0xf2 0x03 0xf2 0x03 0xea 0x00 0x00 0x03 0xfc 0x00 0x00 0x00 0x00 0x03 0xf2 …以下オブジェクトの数だけ繰り返し(この場合11個)
FrmGetFocus (frmP)
イベント
に対応して、オブジェクトがテーブルの場合は、カーソルのハイライトなどの処理を行う。
アプリ側で強制的にフォーカスを移動させるには
HsNavObjectTakeFocus (frmP, objectID);
を使う。
フィールドやテーブルが無い(ボタン類がメインの)フォームでは、
FrmSetNavState (frmP, kFrmNavStateFlagsObjectFocusMode);
としておけば、アプリケーション側で keyDownEvent の処理をする必要は無い。
AND OR
Treo 600 の 5-Way Navigation に関して。
概要
キャラクターコード
KeyDownEventで発行されるchrは、
5-Way Rocker 有無の判断
※下の方法は使えない(エラーとなるため判定できない)。
イベント
関数
最も使うと思われる関数
5-Way Navigation
ソニーのジョグアシストのように、5-Way Rocker での操作をシステムがアシストしてくれる機能がある。モーダルフォーム以外でこれを利用するには、設定が必要。
モードの設定
利用方法
フォーカスモードの設定方法1 … プログラムに記述
プログラム内で、関数を使って記述する方法。
フォーカスモードの設定方法2 … リソースに定義
モードをリソースとして定義する方法。
書式
※1 navFlags に関して
※2 objectFlags に関して
CodeWarriorでの定義
テーブルを含むフォームで利用
KeyDownEvent の処理
フォーカス処理
イベント
に対応して、オブジェクトがテーブルの場合は、カーソルのハイライトなどの処理を行う。
その他
アプリ側で強制的にフォーカスを移動させるには
を使う。
フィールドを含むフォームで利用
KeyDownEvent の処理
その他のフォームでの利用
フィールドやテーブルが無い(ボタン類がメインの)フォームでは、
としておけば、アプリケーション側で keyDownEvent の処理をする必要は無い。