2011年12月17日土曜日

WebBrowser オブジェクトの Tap, DoubleTap イベントを拾う

xaml のプロパティでは各イベントハンドラが定義できます。 当然、定義したイベントに対してハンドラが呼ばれることを期待する訳ですが、呼ばれないものもあります。
例えば WebBrowser オブジェクトの Tap, DoubleTap イベントなどです。


なぜか。WebBrowser は既に double tap すると拡大・縮小するというハンドラが定義されています。そして処理済みのイベントに対しては後続のハンドラが呼ばれないことになっています。

これを回避するためには
webBrowser1.AddHandler(
WebBrowser.DoubleTapEvent , new EventHandler<GestureEventArgs>(webBrowser1_DoubleTap), true);
のようにAddHandler()を使ってハンドラを登録し、その第三引数で true を指定してコールバックするよう明示してあげる必要があります。

でも、定義済みのハンドラを外すのはどうしたらいいんだろう。 OnDoubleTap をオーバーライドすればいいのかしらん。

2011年12月13日火曜日

Windows Phone の開発を Mac 上の仮想マシンで行うのはほぼ不可能

Windows Phone の開発環境を Mac 上に構築しようと四苦八苦した記録です。
結論としては「BootCamp 必須」です。XNA使わないなら仮想マシンでもなんとかなるんじゃと思ってたけど浅はかでした。
  • ホストOS
    • MacBook Pro (15inch, 2.4GHz Core i5, 8GB memory)
    • Mac OS X 10.7.2
  • VirtualBox 4.1.6
    • エミュレータがとても遅い。起動も遅いし、xapの配置も遅い
    • 加えてzune softwareが起動しない。つまり実機の接続が出来ない
      • Direct3D を有効にし、ビデオメモリの割り当てを追加したら起動はするようになった
      • が、しかしウィンドウ内がちらつくのでまともに操作が出来ない
    • エミュレータの AdditionalTools (">>" を押したときにでてくるやつ) が起動しない
  • VMware Fusion 4.1.1
    • それなりに快適
    • zuneは起動した
    • エミュレータ上でWebBrowserコンポーネントが描画されない
    • 例えば http://msdn.microsoft.com/en-us/library/ff431744(VS.92) のMini-Browser Sampleをビルドしても、コンテンツが描画されず、真っ白なまま
    • AdditionalToolsは起動するがスクリーンキャプチャができない(internal errorと言われる)
  • Parallels
    • もう疲れた...
    • 仮に動いたとしても将来動かない機能があったときに、それが自分のコードが悪いのか、エミュレータぎ悪いのか切り分けが必要で、本質とかけ離れたところで苦労しそう
    • という訳であきらめました
特にスクリーンキャプチャができないのが致命的で、これがないと AppHub から登録ができません。 開発自体は実機でできても、公開ができなければモチベーションの維持ができません。 (Windows Phone は実機でスクリーンキャプチャが (まだ?) できません。)
というわけで、やはりBootCampが幸せへの近道のようです。あるいはPCを一台買うか。
あぁ、スタートラインが遠い...
最後に、Windows Phone エミュレータのシステム要件へのリンクを貼っておきます。 http://go.microsoft.com/fwlink/?LinkID=219823

2011年12月11日日曜日

vmware: VMware Fusion で簡易インストールを使うとキーボードが日本語配列に なる

VMware Fusion には簡易インストールという機能があります (おそらく他のエディションにも)。 これはプロダクトキー、パスワードを仮想マシンのセットアップ時に入力しておくと、 インストール作業をほぼ全て自動でやってくれるという優れた機能です。

しかしながら、キーボードの配列を勝手に日本語 (106) 配列にしてしまうようで、 英語 (101) 配列になれた身にとっては苦痛きわまりないです。

http://blog.heiichi.com/?eid=792239 このページの通りに書き換えたところ、 無事 101 配列になりましたが、こういった考慮はされていないので注意が必要です。

2011年12月9日金曜日

WP7: Visual Studio 2010 Express を Emacs like なキーバインドにする

Windows Phone アプリ開発で初めて Visual Studio を使いました。 普段は Mac を使っているので、VSのキーバインドも emacs なものに変更しようと試みましたが、 Express 版ではそのような手段は提供されていないようです。 大変がっかりしたのですが、手で一つ一つ設定することで大体の目的を達成することができました。

以下のようにします:

  • Tools > Options > Environment > Keyboard を開く
  • 必要な Edit.XXX を再定義する
  • Edit.EmacsXXX というエントリもあって紛らわしいが、これは変更しても何も起きないようだ
  • スコープは "Text Editor" にしておく
  • "Global" と"Text Editor" スコープで定義が重複している場合には "Global" が負ける

この設定をエクスポートしたものを https://raw.github.com/zakkie/VisualStudioExtension/master/emacs.vssettings においたので良かったら参考にしてください。emacs.vssettings の末尾に定義したキーが並んでいます。


追記1: emacs.vssettings の URL を変更

2011年12月1日木曜日

WP7: ChevronWP7 によるアンロックサービス

先日、ChevronWP7 から Windows Phone7 をアンロックするサービスが開始されました。 わくわくしながらアンロックを試したのですが、

“Your phone is ignoring us”

となって先に進めませんでした。SIM が入ってないからかなーとか色々疑いましたが、 結局画面をロックした状態で使用していたのが原因でした。タイルを表示した状態で 接続したところ、無事進むことができました。

さて一歩進んだわけですが、ChevronWP7 Labs と PayPal でトラブっているようで、 Token の購入ができません。twitter で "Good news, we're switching payment gateways soon" と言っているので、まあ気長に待ちますか。