As macros de conversão de Cadeia de caracteres aqui discutidas são válidas para ATL e MFC. Para obter mais informações sobre conversão de Cadeia de caracteres MFC, consulte TN059: usando Macros de conversão MFC MBCS/Unicode e Macros MFC e globais.
A sintaxe das macros de conversão de Cadeia de caracteres é:
NOMEDAMACRO ( string_address )
Por exemplo:
A2W(lpa)
Em nomes de macro, o tipo de Cadeia de caracteres de origem é à esquerda (por exemplo, A) e o tipo de Cadeia de caracteres de destino é à direita (por exemplo, W). A representa a LPSTR, OLE representa LPOLESTR, T representa o LPTSTRe w representa o LPWSTR.
Assim, A2W converte um LPSTR para um LPWSTR, OLE2T converte um LPOLESTR para um LPTSTRe assim por diante.
A Cadeia de caracteres de destino é criada usando _alloca, exceto quando o tipo de destino é BSTR. Usar _alloca aloca memória na pilha, para que quando a função retorna, ele é automaticamente limpo.
Se não houver um c no nome da macro, a macro converte uma Cadeia de caracteres const . Por exemplo, W2CA converte um LPWSTR em um LPCSTR.
&Notanbsp; Ao usar uma macro de conversão de Cadeia de caracteres ATL, especifique a macro USES_CONVERSION no início da sua função para evitar erros do compilador. Por exemplo:
void func (LPSTR lpsz)
{
nbsp; USES_CO&NVERSION;
...
LPWSTR x = A2W(lpsz)
/ / Fazer algo com x
...
}
O comportamento de macros de conversão de Cadeia de caracteres ATL depende a diretiva de compilador em efeito, se houver. Se os tipos de origem e de destino forem iguais, nenhuma conversão ocorre. Diretivas de compilador alterar t e OLE da seguinte forma:
| Diretiva de compilador em efeito | T torna-se | OLE torna-se |
| nenhum | A | W |
| UNICODE | W | W |
| OLE2ANSI | A | A |
| Unicode e OLE2ANSI | W | A |
A tabela a seguir lista as macros de conversão de Cadeia de caracteres ATL.
Macros de conversão de Cadeia de caracteres 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 |
Ver também
DEVMODE e TEXTMETRIC Cadeia de caracteres de conversão Macros