Рядок перетворення макросів

Рядок перетворення обговорювали тут вони дійсні для ATL і MFC. Додаткові відомості про перетворення рядка MFC, перегляньте TN059: використання MFC Азійських/Юнікод перетворення макросів і MFC макроси та Globals.

Синтаксис макроси перетворення рядка:

MACRONAME ( string_address )

Наприклад:

A2W(lpa)

В імена макросів тип джерела рядків в лівій частині вікна (наприклад, A) і типу рядок призначення на правому (наприклад, W). A виступає за LPSTR, OLE стенди для LPOLESTR, T стенди для LPTSTRі w стенди для LPWSTR.

Таким чином, A2W перетворюється в LPSTR LPWSTR, OLE2T перетворюється в LPOLESTR на LPTSTRі так далі.

Призначення рядок створюється з використанням _alloca, за винятком, коли тип цілі БУЛ. За допомогою _alloca виділення пам'яті зі стеку, так що коли ваш функція повертає, він автоматично очищені.

Якщо в імені макросу C , макрос перетворює константа рядок. Наприклад, W2CA перетворюється в LPWSTR в LPCSTR.

Приміткаnbsp;  При використанні в ATL рядок перетворення макросів, укажіть макрос USES_CO&NVERSION на початку вашої функції для того, щоб уникнути помилок компілятор. Наприклад:

недійсними func (LPSTR lpsz)
{
 nbsp; USES_CO&NVERSION;
   ...
   LPWSTR x = A2W(lpsz)
   / / Зробити щось з x
   ...
}

Поведінка 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 T2W W2T

ATL макроси та глобальні функції

Дивіться також

DEVMODE і TEXTMETRIC рядок перетворення макросів

Index