W-ZERO3向けソフト開発開始

eMbedded Visual C++ 4.0 (以下、eVC++)をインストールして、W-ZERO3用のソフト開発に着手し始めた。
本職は、自称・ソフトウェアアーキテクトということにしているのだが、このごろはすっかりデバッガだったり、ポーターだったり、あんまり自分でコードを書くことはしていない今日この頃。
さらには、作るアプリケーションはGUIを使わないので、その手のプログラムもかなり久しぶり。
実は、数年前にVisual C++ 6.0で仕事をしたことがほんのちょっとだけあるのだが、すっかり忘れてるし。
本格的にGUIプログラミングをしたのって、「ざうちゃっ」が最後かしら?
前置きは長くなったけれど、まずは、MFCの作法とかを学んでいかないといかんなあ、と思うのだった。
まず、eVC++を起動して、最初にアプリケーションの雛形を選ぶ。
いくつか試したところでは、Pocket PC 2003用の「Hello World」アプリがよさそうだった。
これをビルドして、W-ZERO3で動かしてみたところ、「ソフトキー1」にきちんとメニューが割り当ててあった。
そう、Pocket PC用のソフトをインストールしても、多くはこのキーに対応していなかったりして、対応するのは難しいのだろうか?と思っていたのだ。探し方も見当もつかなかったし。
しかし、あっさりと、「Menubar」のリソースの中にあった。これはありがたい。
「IDM_MAIN_COMMAND1」 というのがそのキーイベントのIDで、左側の「ソフトキー1」に相当するらしい。
同じく、「IDM_MAIN_COMMAND2」というのが右側の「ソフトキー2」に相当する。
キーがわかれば、次は、そのキーイベント、ここではメニューバーなので、メニューイベントになるが、それを処理している部分を探して、お好みの処理を入れてあげればいい。
Pocket PCでは、右上の「×」ボタンを押しても、ウィンドウを閉じるだけでプロセスは動いたままになってしまって、終了させるのが面倒くさい。なので、メニューに「完全に終了する」という処理を入れたかった。
これは、「WndProc」というコールバック関数で処理されていた。
ちょうど、ヘルプダイアログを出すメニューイベントが記述されていたので、同じところにcase文を使って記述しておいた。
プログラムを終了する方法は実はよくわからないのだが、WM_DESTORYメッセージを自分のウィンドウハンドラに投げてやればいい、のかな?と思って、その処理を入れてみた。
SendMessage (hWnd, WM_DESTROY, 0, 0);
というのは、同じように、OKボタンが押されたときの処理で、WM_CLOSEメッセージを投げていたからだ。
で、実際、WM_DESTROYメッセージを投げたら、アプリケーションは完全に終了してくれた。
ま、これでいいか。
あとは、おまけで、W-ZERO3の高解像度(Hi Resolution)対応するためのリソースも追加した。
これは、Pocket Streets 2002のVGA化でも使ったのと同じ手法で、「CEUX」というリソースを追加して、そこに適切な値を設定してやると、アプリケーションがVGA対応であると認識するのだそうだ。
その方法については、「Windows Mobile 2003 Second Edition Developer Resources」に含まれるドキュメント「DPI_Awareness.doc」に書いてあった。
とりあえず、何もできないけれど、「Hello World」が表示されるだけのアプリが完成。
HELLOAPP
さて、次は、「Hello World」を書き換えるところかなあ。
追伸: せっかくなので、W-ZERO3のカテゴリを作ってみた。