Рядок перетворення обговорювали тут вони дійсні для 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 макроси та глобальні функції
Дивіться також