ここでは説明の文字列変換マクロは ATL と MFC の両方に対して有効です。MFC の文字列変換の詳細についてを参照してくださいTN059: MFC MBCS/Unicode 変換マクロを使用してとMFC マクロとグローバル関数。
文字列変換マクロの構文です。:
MACRONAME ( string_address )
たとえば:
A2W(lpa)
マクロ名、ソース文字列型を左側 (たとえば、 A) は、先の文字列型 (たとえば、 W) の右側にあります。 LPSTR、 OLE略LPOLESTR、 LPTSTR、 T略W略LPWSTR略。
したがって、 A2W LPSTR LPWSTRに変換、 OLE2T LPOLESTR LPTSTRのように変換。
変換先の文字列変換先の型がBSTRの場合 _alloca、以外を使用して作成されます。関数が戻るときに、それ自動的にクリーンアップされるように _allocaを使用して、スタックからのメモリを割り当てください。
マクロ名ではCがある場合は、マクロをconst文字列に変換します。たとえば、 W2CA LPWSTR LPCSTRに変換します。
注特価;ATL 文字列変換マクロを使用すると、コンパイラ エラーを避けるためにUSES_CONVERSIONマクロ、関数の先頭を指定します。たとえば(&N):
void func (LPSTR lpsz){特価;USES_CONVERSION;...LPWSTR x A2W(lpsz) =・ ・何か x...}(&N)
存在する場合、コンパイラ ディレクティブで ATL 文字列変換マクロの動作によって異なります。ソースと変換先の型が同じ場合、変換は場所をとらない。コンパイラ ディレクティブTおよびOLEをとおり変更します。:
| コンパイラ ディレクティブの効果 | T になります。 | OLE になります。 |
| なし | A | W |
| _UNICODE | W | W |
| OLE2ANSI | A | A |
| _UNICODEとOLE2ANSI | W | A |
次の表に ATL 文字列変換マクロ。
ATL 文字列変換マクロ
| A2BSTR | OLE2A | T2A | W2A |
| A2COLE | OLE2BSTR | T2BSTR | W2BSTR |
| A2CT | OLE2CA | T2CA | W2CA |
| A2CW | OLE2CT | T2COLE | W2COLE |
| A2OLE | OLE2CW | T2CW | W2CT |
| A2T | OLE2T | T2OLE | W2OLE |
| A2W | OLE2W | S20 | W2T |
参照してください。