08 March 2008

Windows CE で ini ファイルを使う (GetPrivateProfileString)

Windows CE (Windows Mobile) を扱う必要が出てきたので、とりあえずVisual C++でどのように扱えるのか試してみた。

C# では自動的に処理されていた unicode が、C++では全てコーディング時に明示的に処理してやらないといけないというのは、なんだかなぁ…

ここまでは前置きで、では本題。
iniファイルから設定値を読み込もうとして、GetPrivateProfileString 関数を書いてみると、コンパイルエラー。こんな基本的な関数さえ移植されていないようだ。
embedded MFC が、本家MFCのサブセットだと言うことは十分承知していたが、SDKもスカスカのサブセットだったようだ。

googleで調べた結果、自作しろと言う結論に達する。

fgetwsで1行ずつ読み込み、wcstok関数で"="をキーワードに切り出し、変数を見つけ出す。という関数を書けばいいわけだ。
普段慣れないunicode対応のストリーム関数やら、文字列操作関数。ややこしいです。

やはり、C#のような新しい世代の言語はunicodeも意識せずに自動対応しているので、システムレベルの話をしない時はそっちのほうが楽ですよね。

ASCII版の関数と、MBCS版の関数の対応表 とか、MSDNライブラリのどこかにまとめておいて欲しかった。