この週末は急ぎの事情から、Windowsアプリケーションを一通り作る体験ができた。駆け足だが。
もちろん、無償のMicrosoft Visual Studio 2010 Express Edision が前提。
いろいろ忘れないうちにメモしておきたい。

まず、C++はコンソールアプリケーションとか作る分には軽快な単独アプリとして完結したものを作れる。
.NETとか何かのDLLとかに依存しないものを作れるという意味。
そのためには、プロジェクトのプロパティーで、構成のプロパティーのうち、C/C++>コードの生成の
「ランタイムライブラリ」の項目を“マルチスレッド(/MT)”か“マルチスレッドデバッグ(/MTd)”に変更する。
初期条件の名称に「DLL」が入ったものはダメ。とのこと。

ただ、unix端末のような簡単なコンソールアプリを作りたかったのだが、
ユニコードがらみで文字列の扱いが複雑すぎてなんかかえって面倒だった。
解決方法のひとつは、プロジェクトの構成プロパティーで「Unicode文字セットを使用する」から
「マルチバイト文字セットを使用する」に変更することと言われているが、
これだと無意識に無神経なプログラミングをすることになってしまうので採らず、
今回はユニコード環境の文字扱いを体験してみた。
但し、時間がなくてあまり深入りできなかったので、TCHAR と char が混在してしまった。
これらの間は、よく言われているようにキャストで行き来する方法もあるのかも知れないが、
今回「CharToOem」「OemToChar」という便利なメソッドを見つけたのでこれを活用した。
CharがTCHAR(Unicode)であり、Oemがchar(マルチバイトとかANSI)という感じ。
ファイルを開くアプリケーションを作っていたので、ファイル名の扱いは必須だったのだが、
ついぞ今回は日本語ファイル名はうまく扱えなかった。