Advanced/W-ZERO3[es]用スキンを作ってみた(未完)
Smart Device プロジェクトでは、ターゲットとなるモバイルの形状や機能に合わせてフォームデザイナ・エミュレータ用にスキンを作成することができます。
せっかくなので、自分の持っているAdvanced/W-ZERO3[es] ( 以下、アドエス ) 用のスキンを作ってみました。
ほらほら。
ほーらほらほら。
あーらあらあら。
…あまりうまくいかんなぁ。
まあたぶんとりあえず今の私にはここまでが限界っぽいすねはっはっは。
現状の不具合にはいくつかの原因がありまして。
1. アドエスに対応した OS イメージが存在しない。
これはもうどうしようもありません。自分で作る方法が提供されていない(はず)ので。
しかたがないので Windows Mobile 6 Classic ( 以下、WM6C ) の PPC_JPN.BIN を流用したんですが、これ、エミュレータの起動時には本来の 240×240 で表示され、Ready 状態になるまでの間に表示サイズに変更がかかります。
また、フォームエディタ / エミュレータでの表示領域サイズは 240×400 です。
最初律儀に480×800で作ったんですが、表示される文字のサイズが小さすぎて… 240×400 の方が、アドエスの表示バランスに近いようなので。
さらに、アドエスと WM6C では用意されているハードウェアキーも違うんですが、これも今回作ったスキンではうまく吸収できていません。
一応アドエスの KeyDown 時に発生するキーコードを埋め込んでみたんですが、アドエスでは文字入力モードを変えると発生するキーコードが変わるようで…自分的によく使う「_1」( 半角英数モード ) でのキーコードを採用しましたが、エミュレータ上で動作検証できる状態ではありませんね。
この状態でエミュレータのメモ等を起動して操作してみると、予想外の文字が入力されて楽しいやら悲しいやら。
2. スキンの反映のさせ方がよくわからない。
エミュレータ側に食わせる設定データは .decfg ファイル作ればイケたんですが、VS IDE 側にこれを食わせることができず、同じ設定をオプションダイアログから手動設定させなければなりませんでした。
このへん、なんか方法がありそうなんだけどなー。
また、.decfg ファイルはマイドキュメントの My Device Emulators フォルダに置かなければエミュレータマネージャが認識せず、スキンは Windows Mobile 6 SDK フォルダ下に置かなければ VS IDE が認識してくれませんでした。
この個人用設定なのか共通設定なのかよくわからない配置ってのもなんとなく納得いっていません。
くやしいのうくやしいのう。
というわけで、なんか雰囲気だけのスキンのような気もしますが、いったん公開してみてしまったりもします。
以下、配置と設定手順。
XP を例として説明していますので、Vista な方は適宜読み変えていただけると。
- zip 中の My Device Emulators フォルダ下のファイル ( Advanced W-ZERO3[es].decfg ) を、マイ ドキュメント\My Device Emulatorsフォルダにコピーします。
( フォルダはコピーしないこと。 )
- zip 中の Advanced W-ZERO3[es] フォルダを、Windows Mobile 6 SDK\PocketPC\Deviceemulation フォルダ下にコピーします。
( フォルダごとコピーすること。 )
- 1. でコピーした Advanced W-ZERO3[es].decfg をテキストエディタで開き、以下の修正をします。
- Skin> タグに、2. で配置した Ad_es.xml のフルパスを記述。
- OSImage> タグに、PPC_JPN.BIN のフルパスを記述。
- VS IDE のメニューから [ ツール ] → [ デバイスエミュレータマネージャ ] でデバイスエミュレータマネージャを起動し、[ マイデバイスエミュレータ ] に [ Advanced W-ZERO3[es] ] - [ Advanced W-ZERO3[es] ] が表示されていることを確認します。
- VS IDE のメニューから [ ツール ] → [ オプション ] で「オプション」ダイアログを表示、左側のツリーから [ デバイスツール ] → [フォームファクタ] を選択して以下の作業を行います。
- [ フォームファクタ ] リストボックスから「Windows Mobile 6 Classic」を選択。
- [ 名前を付けて保存 ] ボタン → [ Advanced W-ZERO3[es] ] ダイアログボックスを表示 → 「Advanced W-ZERO3[es]」と名前を入力して [ OK ]。
- [ フォームファクタ ] リストボックスから「Advanced W-ZERO3[es]」を選択し、[ プロパティ ]ボタン押下 → 「Advanced W-ZERO3[es]のプロパティ」ダイアログを表示。
- [ スキン ] に、2. で配置した Ad_es.xml の絶対パスを記入。
- [ 回転サポートを有効にする ] にチェック、[ 水平解像度 ] / [ 垂直解像度 ] はともに「96」、[ スキンの表示 ] にチェック。→ [ OK ]。
- 引き続き「オプション」ダイアログ左側のツリーから [ デバイスツール ] → [デバイス] を選択して以下の作業を行います。
- [ デバイス ] リストボックスから「JPN Windows Mobile 6 Classic Emulator」を選択。
- [ 名前を付けて保存 ] ボタン → [ Advanced W-ZERO3[es] ] ダイアログボックスを表示 → 「Advanced W-ZERO3[es] Emulator」と名前を入力して [ OK ]。
- [ デバイス ] リストボックスから「Advanced W-ZERO3[es] Emulator」を選択し、[ プロパティ ]ボタン押下 → 「Advanced W-ZERO3[es] Emulatorのプロパティ」ダイアログを表示 → [ エミュレータオプション ] ボタン押下 → [ エミュレータのプロパティ ] ダイアログを表示。
- 4. のデバイスエミュレータマネージャから一番下位ノードの [ Advanced W-ZERO3[es] ] を右クリック → [ 接続 ] を選択してエミュレータを起動、エミュレータのメニューから [ ファイル ] → [ 構成 ] を選択して、こちらも[ エミュレータのプロパティ ] ダイアログを表示。
- エミュレータの エミュレータのプロパティ ] ダイアログ と同じ内容を、VS IDE の [ エミュレータのプロパティ ] ダイアログに設定します。
- VS IDE から自動で起動するエミュレータのスキンをアドエスにしたければ、[ 既定のデバイス ] を [ Advanced W-ZERO3[es] Emulator ] に設定します。
ふう。
これで全部全部終了させて VS IDE を再起動すれば、とりあえずフォームデザイナ / エミュレータにスキンが反映される。と思います。
実際には、どうもうまく反映されたりされなかったりするらしく、何度か設定を繰り返しました。このへんもどうなんだろうなー。
このへん、もう少しましに動作するように作り込みたいんですよね…。
やっぱ取っ掛かりは、msdnやWebだけではどうにもなりませんね。概念の全体像がつかめない。
つことで、とりあえず本屋に行ってきます。2冊ほど目をつけているのがあるんですよ。