この記事では、プログラミングよりも開発環境やコンパイル方法など、開発手順の解説に重点を置くため、単純なプログラムを使用します。brain.cpp をダウンロードしてください。なお、このプログラムは通常の Windows PC と Windows CE のどちらでも使用できるようにしてあるので、Brain を所持していない方でも Win32 アプリケーションを開発できる環境があれば試すことは可能です。
Linux, Cygwin, WSL, macOS 等の UNIX 環境で使用できる、最新の Windows CE 開発環境です。Windows XP のような古い Windows 環境が不要で、GCC 9.3.0 ベースなので C++17 を完全にサポートしているなど、現在では最も使いやすい環境です。ただし、個人の方が作成されたものだというのもあり、若干癖があります。
基本的に公式サイトに従います。Debian 系でない OS や AMD64 以外の CPU を搭載する PC の場合は、こちらに従ってください。
CeGCC のヘッダファイルは通常版 Windows のものを流用していますが、Windows CE での定数は通常版 Windows とは一部異なるため、これが原因で問題が発生する場合があります。例えば、最小化ボタンを表示させたはずが最大化ボタンが出たりします。そのため、ヘッダファイルを書き換える、正しい数値を直接指定する、正しい数値でマクロ定数を定義しなおす、等の対応が必要となります。今回のサンプルソースでは、冒頭にマクロ数値を補正するコードを記述してあります。Microsoft は初期の頃の Windows CE 開発環境を高値で販売していたようなので、「定数をずらすことでフリー実装の登場を遅らせて、その間に自社の開発環境で儲けよう」みたいなことを企んでいたのかもしれません。
知る人ぞ知る、2000 年頃の Windows CE 用 Microsoft 純正無料 IDE です。激古なので C++ の新しい機能は使えず、Windows 2000 と Windows XP でしかフル機能が使えないという難点がありますが、最新の CeGCC が発見されるまでは唯一の無料で使える開発環境でした。
環境構築
まず、 Microsoft Download Center (直リン) からダウンロードします。これは自動解凍式の圧縮ファイルになっているので、実行して適当な場所に解凍します。それで得られたファイルの setup.exe を実行し、手順に従ってインストールします。途中でプロダクトキーを聞かれますが、先ほどのダウンロードページの「インストール方法」欄に記載されているものを入力すれば大丈夫です。
最後に、いずれかの Standard SDK をインストールします。Windows 2000, XP の場合は両方の SDK をインストールしておき、ビルド時にどちらを使うか選択することも可能です。
Windows Vista 以降であるか、他の CE4 系デバイス (Sigmarion III など) も対象とする場合は、最初に解凍した中身の SDK フォルダに入っている setup.exe を実行し、指示に従いインストールします。ただし、Windows Vista 以降の場合は Windows XP (Service Pack 3) の互換モードを設定して実行します。
Windows 2000, XP であり、他の CE4 系デバイスを対象としない場合は、Windows CE 5.0 の Standard SDK をダウンロードし、インストールします。SHARP Brain のネイティブにより近いものができるのはこちらです。
プロジェクト作成・ビルド
左上の「ファイル(F)」から「新規作成」をクリックします。その後、下の画像のように設定します。CPU に関して、 SHARP Brain は Armv5TEJ ですが、この IDE にはないため ARMV4I を選択します。SHARP Brain 以外の CE デバイス用のビルドも行いたければ、ARMV4I に加えてその他の CPU を選択しても構いません。設定できたら「OK」を押します。
Win32 API プログラミングについては一切触れませんでしたが、こちらのノウハウ集が参考になると思います。ただし、ノウハウ集にも記載の通り、Windows における最も原始的な方法となるため難易度が高く、C/C++ をそれなりに理解していることが求められます。私も、高2の頃 Hello, world! にたどり着くまでに 1, 2 週間かかりました。さらに Command Bar など、調べても出てこない Windows CE の独自仕様も相当あるので大変です。しかし、電子辞書で自作ソフトが動作する感動はなかなかのものです!