C++Builder2009におけるWin32APIのWideString版を呼び出す方法

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」なら、ヘルプの記載も正しいのだが。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください