- Palmwares and Miscellany -
開始行:
&tag(Palm,Program);
Treo 600 の 5-Way Navigation に関して。
#contents
*概要 [#r1296188]
**キャラクターコード [#z9e50da1]
KeyDownEventで発行されるchrは、
-vchrRockerUp : 上ボタン
-vchrRockerDown : 下ボタン
-vchrRockerLeft : 左ボタン
-vchrRockerRight : 右ボタン
-vchrRockerCenter : 中央ボタン
**5-Way Rocker 有無の判断 [#k0f44d7e]
UInt32 val;
if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &v...
// 5-Way Rocker あり
~
※下の方法は使えない(エラーとなるため判定できない)。
if (FtrGet (sysFileCSystem, sysFtrNumUIHardwareFlags, &v...
{
if (val & sysFtrNumUIHardwareHas5Way)
// 5-Way Rocker あり
}
**イベント [#o7cc7e82]
:frmObjectFocusTakeEvent|オブジェクトがフォーカスされた
:frmObjectFocusLostEvent|オブジェクトのフォーカスが解除さ...
**関数 [#e777268b]
最も使うと思われる関数
:HsNavObjectTakeFocus (frmP, objectID)|指定したオブジェク...
*5-Way Navigation [#cecc5ab9]
ソニーのジョグアシストのように、5-Way Rocker での操作をシ...
**モードの設定 [#u33f83f1]
-フォーム毎に、次の2つのフォーカスモードを設定することが...
--object focus mode : システムのアシストあり
--application focus mode : システムのアシストなし
-デフォルトのモード
--モーダルフォーム : object focus mode
--その他のフォーム : application focus mode
-設定方法(後述)
--プログラムに記述 …使い回しが効く?
--リソースに定義 …機種の判断が不要だが、全てのオブジェ...
**利用方法 [#j16a0082]
-object focus mode に設定されたフォームでは、アプリケーシ...
*フォーカスモードの設定方法1 … プログラムに記述 [#y0c2b3...
プログラム内で、関数を使って記述する方法。
+フォーム全体
FrmSetNavState (frmP, stateFlags)
パラメータ stateFlags
--kFrmNavStateFlagsInteractionMode:application focus mode
--kFrmNavStateFlagsObjectFocusMode:object focus mode
+オブジェクト
FrmSetNavEntry (formP, targetObjectID, afterObjectID,
aboveObjectID, belowObjectID, objectFlags)
パラメータ stateFlags
--kFrmNavObjectFlagsSkip : フォーカスをスキップする
--kFrmNavObjectFlagsForceInteractionMode : 相互作用モード...
--kFrmNavObjectFlagsIsBigButton : ビッグボタンモード
--0 でも問題ない。ただし、オブジェクトがフィールドやテー...
+フォームとオブジェクトをまとめて設定
FrmSetNavOrder (formP, navHeaderP, navOrderP)
*フォーカスモードの設定方法2 … リソースに定義 [#i9ac8253]
モードをリソースとして定義する方法。
-モーダルフォーム以外で 5-Way Navigation を有効にするには...
-定義する内容は、上記のプログラムに記述するものと同様。
-サンプルコード「HsNavSample」が参考になる。
**書式 [#d590395f]
-ヘッダー
UInt16 version; // APIのバージョン (=1)
UInt16 numberOfObjects; // オブジェクトの数
UInt16 headerElementSizeInBytes; // ヘッダーサイズ (=20)
UInt16 listElementSizeInBytes; // リストの要素サイズ (...
UInt32 navFlags; // フォーカスモード ※1
UInt16 initialObjectIDHint; // 最初にフォーカスされ...
UInt16 jumpToObjectIDHint; // 未使用
UInt16 bottomLeftObjectIDHint; // 未使用
UInt16 padding; // ?
-以下はオブジェクトの数(numberOfObjects)だけ繰り返し。...
UInt16 objectID; // オブジェクトのID
UInt16 objectFlags; // フラッグ ※2
UInt16 aboveObjectID; // 1つ上のオブジェクト...
UInt16 belowObjectID; // 1つ下のオブジェクト...
※1 navFlags に関して
-kFrmNavHeaderFlagsObjectFocusStartState(=0x00000001) :o...
-kFrmNavHeaderFlagsAppFocusStartState(=0x00000002) :appl...
※2 objectFlags に関して
-kFrmNavObjectFlagsSkip(=0x0001) : フォーカスをスキップする
-kFrmNavObjectFlagsForceInteractionMode(=0x0002) : 相互作...
-kFrmNavObjectFlagsIsBigButton(=0x8000) : ビッグボタンモ...
-0x0000 でも問題ない。ただし、オブジェクトがフィールドや...
**CodeWarriorでの定義 [#qd0c532c]
-[[PilRC:http://www.ardiri.com/index.php?redir=palm&cat=p...
-拡張子は「.rcp」。
-入力する数値はHEX(16進数)。
-サンプル
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個)
-このファイルをプロジェクトに加えて、他のものと一緒にコン...
*テーブルを含むフォームで利用 [#h272249b]
**KeyDownEvent の処理 [#j5eb4dee]
-フォーカスされているオブジェクトを
FrmGetFocus (frmP)
で調べ、テーブルの場合だけ KeyDownEvent の処理を行う。
-テーブルの選択行(カーソル)が先頭行または最終行を超える...
-フォーカスがテーブル以外にあるときは、KeyDownEvent の処...
**フォーカス処理 [#jd13e2fd]
イベント
-frmObjectFocusTakeEvent
-frmObjectFocusLostEvent
に対応して、オブジェクトがテーブルの場合は、カーソルのハ...
**その他 [#a664997f]
アプリ側で強制的にフォーカスを移動させるには
HsNavObjectTakeFocus (frmP, objectID);
を使う。
*フィールドを含むフォームで利用 [#a8c28b88]
**KeyDownEvent の処理 [#p5ce0908]
-アプリ側で処理することはほとんど無い。
-vchrRockerCenter の場合だけ、[OK]や[Done]などのフォーム...
*その他のフォームでの利用 [#h326bf03]
フィールドやテーブルが無い(ボタン類がメインの)フォーム...
FrmSetNavState (frmP, kFrmNavStateFlagsObjectFocusMode);
としておけば、アプリケーション側で keyDownEvent の処理を...
終了行:
&tag(Palm,Program);
Treo 600 の 5-Way Navigation に関して。
#contents
*概要 [#r1296188]
**キャラクターコード [#z9e50da1]
KeyDownEventで発行されるchrは、
-vchrRockerUp : 上ボタン
-vchrRockerDown : 下ボタン
-vchrRockerLeft : 左ボタン
-vchrRockerRight : 右ボタン
-vchrRockerCenter : 中央ボタン
**5-Way Rocker 有無の判断 [#k0f44d7e]
UInt32 val;
if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &v...
// 5-Way Rocker あり
~
※下の方法は使えない(エラーとなるため判定できない)。
if (FtrGet (sysFileCSystem, sysFtrNumUIHardwareFlags, &v...
{
if (val & sysFtrNumUIHardwareHas5Way)
// 5-Way Rocker あり
}
**イベント [#o7cc7e82]
:frmObjectFocusTakeEvent|オブジェクトがフォーカスされた
:frmObjectFocusLostEvent|オブジェクトのフォーカスが解除さ...
**関数 [#e777268b]
最も使うと思われる関数
:HsNavObjectTakeFocus (frmP, objectID)|指定したオブジェク...
*5-Way Navigation [#cecc5ab9]
ソニーのジョグアシストのように、5-Way Rocker での操作をシ...
**モードの設定 [#u33f83f1]
-フォーム毎に、次の2つのフォーカスモードを設定することが...
--object focus mode : システムのアシストあり
--application focus mode : システムのアシストなし
-デフォルトのモード
--モーダルフォーム : object focus mode
--その他のフォーム : application focus mode
-設定方法(後述)
--プログラムに記述 …使い回しが効く?
--リソースに定義 …機種の判断が不要だが、全てのオブジェ...
**利用方法 [#j16a0082]
-object focus mode に設定されたフォームでは、アプリケーシ...
*フォーカスモードの設定方法1 … プログラムに記述 [#y0c2b3...
プログラム内で、関数を使って記述する方法。
+フォーム全体
FrmSetNavState (frmP, stateFlags)
パラメータ stateFlags
--kFrmNavStateFlagsInteractionMode:application focus mode
--kFrmNavStateFlagsObjectFocusMode:object focus mode
+オブジェクト
FrmSetNavEntry (formP, targetObjectID, afterObjectID,
aboveObjectID, belowObjectID, objectFlags)
パラメータ stateFlags
--kFrmNavObjectFlagsSkip : フォーカスをスキップする
--kFrmNavObjectFlagsForceInteractionMode : 相互作用モード...
--kFrmNavObjectFlagsIsBigButton : ビッグボタンモード
--0 でも問題ない。ただし、オブジェクトがフィールドやテー...
+フォームとオブジェクトをまとめて設定
FrmSetNavOrder (formP, navHeaderP, navOrderP)
*フォーカスモードの設定方法2 … リソースに定義 [#i9ac8253]
モードをリソースとして定義する方法。
-モーダルフォーム以外で 5-Way Navigation を有効にするには...
-定義する内容は、上記のプログラムに記述するものと同様。
-サンプルコード「HsNavSample」が参考になる。
**書式 [#d590395f]
-ヘッダー
UInt16 version; // APIのバージョン (=1)
UInt16 numberOfObjects; // オブジェクトの数
UInt16 headerElementSizeInBytes; // ヘッダーサイズ (=20)
UInt16 listElementSizeInBytes; // リストの要素サイズ (...
UInt32 navFlags; // フォーカスモード ※1
UInt16 initialObjectIDHint; // 最初にフォーカスされ...
UInt16 jumpToObjectIDHint; // 未使用
UInt16 bottomLeftObjectIDHint; // 未使用
UInt16 padding; // ?
-以下はオブジェクトの数(numberOfObjects)だけ繰り返し。...
UInt16 objectID; // オブジェクトのID
UInt16 objectFlags; // フラッグ ※2
UInt16 aboveObjectID; // 1つ上のオブジェクト...
UInt16 belowObjectID; // 1つ下のオブジェクト...
※1 navFlags に関して
-kFrmNavHeaderFlagsObjectFocusStartState(=0x00000001) :o...
-kFrmNavHeaderFlagsAppFocusStartState(=0x00000002) :appl...
※2 objectFlags に関して
-kFrmNavObjectFlagsSkip(=0x0001) : フォーカスをスキップする
-kFrmNavObjectFlagsForceInteractionMode(=0x0002) : 相互作...
-kFrmNavObjectFlagsIsBigButton(=0x8000) : ビッグボタンモ...
-0x0000 でも問題ない。ただし、オブジェクトがフィールドや...
**CodeWarriorでの定義 [#qd0c532c]
-[[PilRC:http://www.ardiri.com/index.php?redir=palm&cat=p...
-拡張子は「.rcp」。
-入力する数値はHEX(16進数)。
-サンプル
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個)
-このファイルをプロジェクトに加えて、他のものと一緒にコン...
*テーブルを含むフォームで利用 [#h272249b]
**KeyDownEvent の処理 [#j5eb4dee]
-フォーカスされているオブジェクトを
FrmGetFocus (frmP)
で調べ、テーブルの場合だけ KeyDownEvent の処理を行う。
-テーブルの選択行(カーソル)が先頭行または最終行を超える...
-フォーカスがテーブル以外にあるときは、KeyDownEvent の処...
**フォーカス処理 [#jd13e2fd]
イベント
-frmObjectFocusTakeEvent
-frmObjectFocusLostEvent
に対応して、オブジェクトがテーブルの場合は、カーソルのハ...
**その他 [#a664997f]
アプリ側で強制的にフォーカスを移動させるには
HsNavObjectTakeFocus (frmP, objectID);
を使う。
*フィールドを含むフォームで利用 [#a8c28b88]
**KeyDownEvent の処理 [#p5ce0908]
-アプリ側で処理することはほとんど無い。
-vchrRockerCenter の場合だけ、[OK]や[Done]などのフォーム...
*その他のフォームでの利用 [#h326bf03]
フィールドやテーブルが無い(ボタン類がメインの)フォーム...
FrmSetNavState (frmP, kFrmNavStateFlagsObjectFocusMode);
としておけば、アプリケーション側で keyDownEvent の処理を...
ページ名:
コンテンツ
Home
Softwares
Wiki
Forum
Files
About
Feedback
PageTree
Top
(101)
Mac
(2)
P_BLOG
(5)
PalmTips
(5)
Palmware
(5)
Palmware開発メモ
(25)
PukiWiki
(23)
webOS
(2)
開発メモ
(25)
Wiki検索
AND
OR
最新の10件
2023-02-08
PukiWiki
2014-07-28
PukiWiki/FastCGI版PHP対応
2014-03-12
FrontPage
はじめての XREA+
Palmware開発メモ
2014-03-07
Palmware
2012-12-06
オンラインストレージ
2012-07-29
Vagrant
2012-07-25
Android/SH-03C/sdboot
2012-07-18
webOS/TouchPad
Tags
Android
Mac
P_BLOG
Palm
Palmware
Phone
Program
PukiWiki
TouchPad
Web
webOS
Recommend
高性能レンタルサーバー
ポイントお貯めるなら
Syndication
RSS 1.0
RSS 2.0
Extra
0 pageview