Fork me on GitHub

Palm Dynamic+input+area

  • Jun 02, 2006

categoryプラグインは存在しません。

Tungsten T3以降では、Palm OSのAPIで標準で仮想シルクがサポートされている。ドキュメント内ではDynamic Input Areaと呼んでいる。

ドキュメントは、以下のPDF。

  • DynamicInputAreas.pdf

Tungsten T3でこれを有効にするには、PalmのPlugged.inから"Tungsten T3 DIA Compatibility PRCs"をダウンロードしてインストールする必要がある。これらのprcは、各アプリケーションにバンドルすることが推奨されている。

導入された仮想シルクの有無は、以下のコードで判定する。

err = FtrGet(pinCreator, pinFtrAPIVersion, &version);
if (!err && version) \{
 //PINS exists
\}

仮想シルクに関する設定は、frmLoadFormイベントが発行される毎に設定する。

まずは、以下のコードでDynamic Input Areaのポリシーを設定する。

err = FrmSetDIAPolicyAttr(frmP, frmDIAPolicyCustom);

次に、以下のコードでユーザによるInput Areaのopen,close操作を許可する。

err = PINSetInputTriggerState(pinInputTriggerEnabled);

Input Areaに対する操作が行われると、sysNotifyDisplayResizedEventのNotifyが発生し、あらかじめ登録しているアプリケーション全てに通知される。

Pen Input Manager のバージョンによっては、NotifyではなくwinDisplayChangedEventが発生するため、Notifyを受け取った際に以下のようにwinDisplayChangedEventを発生させ、イベントのハンドラでリサイズ処理を行ったほうが良い。

EventType e;
e.eType = winDisplayChangedEvent;
EvtAddEventToQueue(&e);

リサイズ後のウィンドウのサイズは、以下のように取得する。

WinGetBounds(WinGetDisplayWindow(), &displayBounds);

この時点ではActiveFormのサイズは変化しないので注意。

プログラムからInput Areaをコントロールするには、以下のようにする。

err = PINSetInputAreaState(pinInputAreaOpen);

フォームを切り替えた際にシルクの状態を保持するには、

PINSetInputAreaState(pinInputAreaUser);

を実行しておく。逆にこれを実行しておかないと、フォームを切り替えた際に無条件でInput Areaが表示状態になる、らしい。

commentプラグインは存在しません。

目次