DEVMODE および TEXTMETRIC の各文字列変換マクロ
更新 : 2007 年 11 月
これらのマクロは、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 と指定した場合は、DEVMODE 構造体がコピーされ、このうち文字列 LPSTR が LPWSTR に変換されます。また、TEXTMETRICOLE2T と指定した場合は、TEXTMETRIC 構造体がコピーされ、このうち文字列 LPOLESTR が LPTSTR に変換されます。
DEVMODE 構造体では、デバイス名 (dmDeviceName) とフォーム名 (dmFormName) の 2 つの文字列が変換されます。また、DEVMODE 文字列変換マクロでは構造体のサイズ (dmSize) も更新します。
TEXTMETRIC 構造体では、最初の文字 (tmFirstChar)、最後の文字 (tmLastChar)、既定の文字 (tmDefaultChar)、ブレーク文字 (tmBreakChar) の 4 つの文字列が変換されます。
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 |