文字列変換に関するマクロ
これらのマクロからは、文字列変換機能が提供されます。
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
文字列変換マクロの動作は、有効なコンパイラ ディレクティブ (ある場合) によって異なります。 ソースの型とターゲットの型が同じである場合、変換は実行されません。 コンパイラ ディレクティブは、次のように、T と OLE を変更します。
有効なコンパイラ ディレクティブ | T の変更後 | OLE の変更後 |
---|---|---|
なし | A | W |
_UNICODE | W | W |
OLE2ANSI | A | A |
_UNICODE と OLE2ANSI | W | A |
次は文字列変換マクロの DEVMODE
と TEXTMETRIC
を表にしたものです。
DEVMODE マクロ |
TEXTMETRIC マクロ |
---|---|
DEVMODEA2W | TEXTMETRICA2W |
DEVMODEOLE2T | TEXTMETRICOLE2T |
DEVMODET2OLE | TEXTMETRICT2OLE |
DEVMODEW2A | TEXTMETRICW2A |