« パラメータ継承を使ったテンプレートメソッド | メイン | AnsiStringTのコンストラクタの挙動を調べる »

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

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/869

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年12月26日 16:30に投稿されたエントリーのページです。

ひとつ前の投稿は「パラメータ継承を使ったテンプレートメソッド」です。

次の投稿は「AnsiStringTのコンストラクタの挙動を調べる」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35