C++Builder2009では文字列がUnicode文字列に変更された。
この変更に伴い、Win32APIの呼び出しも変更された。
ヘルプには次のように記載されている。
API はデフォルトで WideString(”W”)版を呼び出します。
ms-help://embarcadero.rs2009/devcommon/unicodeinide_xml.html
ところが実際は、「プロジェクトオプション」の「ディレクトリと条件定義」で「_TCHARのマップ先」を「char」から「wchar_t」に変更する必要がある。
ヘルプの「_TCHAR のマップ先」の項目には次のように記載されている。
[wchar_t] を選択すると、以下のように動作します。
- UNICODE と _UNICODE が定義されます。
- リンカはワイド バージョンのライブラリを使用します。
- 標準ライブラリと Windows API の関数は、ワイド定義に設定されます。
ms-help://embarcadero.rs2009/devcommon/dirconditionals_xml.html
「_TCHARのマップ先」の初期値は「char」であるため、WideString版のAPIは呼び出されない。
初期値が「wchar_t」なら、ヘルプの記載も正しいのだが。