文字列変換に関するマクロ

これらのマクロからは、文字列変換機能が提供されます。

ATL と MFC の文字列変換マクロ

ここで説明する文字列変換マクロは、ATL と MFC の両方に対して有効です。 MFC 文字列変換の詳細については、「テクニカル ノート 059: MFC の MBCS/Unicode 変換マクロの使用」と「MFC マクロとグローバル」を参照してください。

文字列変換マクロの DEVMODE と TEXTMETRIC

これらのマクロによって DEVMODE または TEXTMETRIC 構造体のコピーが作成され、新しい構造体内の文字列が新しい文字列型に変換されます。 マクロによって、新しい構造体のスタックでメモリが割り当てられ、新しい構造体にポインターが返されます。

MACRONAME( address_of_structure )

解説

次に例を示します。

DEVMODEW* lpw = DEVMODEA2W(lpa);

および

TEXTMETRICW* lptmw = TEXTMETRICA2W(lptma);

マクロ名では、ソース構造体の文字列型は左にあり (A など)、ターゲット構造体の文字列型は右にあります (W など)。 A は LPSTR を、OLE は LPOLESTR を、T は LPTSTR を、W は LPWSTR を表します。

そのため、DEVMODEA2W によって LPSTR 文字列を持つ DEVMODE 構造体が LPWSTR 文字列を持つ DEVMODE 構造体にコピーされ、TEXTMETRICOLE2T によって LPOLESTR 文字列を持つ TEXTMETRIC 構造体が LPTSTR 文字列を持つ TEXTMETRIC 構造体にコピーされます。

DEVMODE 構造体に変換される 2 つの文字列はデバイス名 (dmDeviceName) とフォーム名 (dmFormName) です。 DEVMODE 文字列変換マクロでは、構造体のサイズ (dmSize) も更新されます。

TEXTMETRIC 構造体に変換される 4 つの文字列は最初の文字 (tmFirstChar)、最後の文字 (tmLastChar)、既定の文字 (tmDefaultChar)、改行文字 (tmBreakChar) です。

DEVMODE および TEXTMETRIC 文字列変換マクロの動作は、有効なコンパイラ ディレクティブ (ある場合) によって異なります。 ソースの型とターゲットの型が同じである場合、変換は実行されません。 コンパイラ ディレクティブは、次のように、TOLE を変更します。

有効なコンパイラ ディレクティブ T の変更後 OLE の変更後
なし A W
_UNICODE W W
OLE2ANSI A A
_UNICODEOLE2ANSI W A

次は文字列変換マクロの DEVMODETEXTMETRIC を表にしたものです。

DEVMODE マクロ TEXTMETRIC マクロ
DEVMODEA2W TEXTMETRICA2W
DEVMODEOLE2T TEXTMETRICOLE2T
DEVMODET2OLE TEXTMETRICT2OLE
DEVMODEW2A TEXTMETRICW2A

関連項目

マクロ