UInt32 val; if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &val) == errNone) // 5-Way Rocker あり
UInt32 val; if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &val) == errNone) // 5-Way Rocker あり ~
if (FtrGet (sysFileCSystem, sysFtrNumUIHardwareFlags, &val) == errNone) { if (val & sysFtrNumUIHardwareHas5Way) // 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(後のではない)
※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);
AND OR
概要
キャラクターコード
概要
キャラクターコード
KeyDownEventで発行されるchrは、5-Way Rocker 有無の判断
5-Way Rocker 有無の判断
※下の方法は使えない(エラーとなるため判定できない)。イベント
イベント
関数
関数
最も使うと思われる関数5-Way Navigation
5-Way Navigation
ソニーのジョグアシストのように、5-Way Rocker での操作をシステムがアシストしてくれる機能がある。モーダルフォーム以外でこれを利用するには、設定が必要。モードの設定
モードの設定
利用方法
利用方法
フォーカスモードの設定方法1 … プログラムに記述
フォーカスモードの設定方法1 … プログラムに記述
プログラム内で、関数を使って記述する方法。FrmSetNavState (frmP, stateFlags)
パラメータ stateFlagsFrmSetNavOrder (formP, navHeaderP, navOrderP)
フォーカスモードの設定方法2 … リソースに定義
フォーカスモードの設定方法2 … リソースに定義
モードをリソースとして定義する方法。書式
書式
- 以下はオブジェクトの数(numberOfObjects)だけ繰り返し
- 順番は左上から右下へ向かって横に移動(が普通だと思う)。
※1 navFlags に関して※2 objectFlags に関して
CodeWarriorでの定義
CodeWarriorでの定義
テーブルを含むフォームで利用
KeyDownEvent の処理
テーブルを含むフォームで利用
KeyDownEvent の処理
FrmGetFocus (frmP)
で調べ、テーブルの場合だけ KeyDownEvent の処理を行う。フォーカス処理
フォーカス処理
イベントに対応して、オブジェクトがテーブルの場合は、カーソルのハイライトなどの処理を行う。
その他
その他
アプリ側で強制的にフォーカスを移動させるにはHsNavObjectTakeFocus (frmP, objectID);
を使う。フィールドを含むフォームで利用
KeyDownEvent の処理
フィールドを含むフォームで利用
KeyDownEvent の処理
その他のフォームでの利用
その他のフォームでの利用
フィールドやテーブルが無い(ボタン類がメインの)フォームでは、FrmSetNavState (frmP, kFrmNavStateFlagsObjectFocusMode);
としておけば、アプリケーション側で keyDownEvent の処理をする必要は無い。