Definindo o alinhamento do texto
Você pode consultar e definir o alinhamento de texto para um contexto de dispositivo usando as funções GetTextAlign e SetTextAlign . As configurações de alinhamento de texto determinam como o texto é posicionado em relação a um local especificado. O texto pode ser alinhado à direita ou à esquerda da posição ou centralizado sobre ele; ele também pode ser alinhado acima ou abaixo do ponto.
O exemplo a seguir mostra um método para determinar qual sinalizador de alinhamento horizontal está definido:
switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & GetTextAlign(hdc))
{
case TA_LEFT:
.
.
.
case TA_RIGHT:
.
.
.
case TA_CENTER:
.
.
.
}
Você também pode usar a função SetTextAlign para atualizar a posição atual quando uma função de saída de texto é chamada. Por exemplo, o exemplo a seguir usa a função SetTextAlign para atualizar a posição atual quando a função TextOut é chamada. Neste exemplo, o parâmetro cArial é um inteiro que especifica o número de fontes Arial.
UINT uAlignPrev;
char szCount[8];
HRESULT hr;
size_t * pcch;
uAlignPrev = SetTextAlign(hdc, TA_UPDATECP);
MoveToEx(hdc, 10, 50, (LPPOINT) NULL);
TextOut(hdc, 0, 0, "Number of Arial fonts: ", 23);
itoa(cArial, szCount, 10);
hr = StringCchLength(szCount, 9, pcch);
if (FAILED(hr))
{
// TODO: write error handler
}
TextOut(hdc, 0, 0, (LPSTR) szCount, *pcch);
SetTextAlign(hdc, uAlignPrev);
Observação
Você não deve usar SetTextAlign com TA_UPDATECP ao usar ScriptStringOut, pois o texto selecionado não é renderizado corretamente. Se você precisar usar esse sinalizador, poderá desajustá-lo e redefini-lo conforme necessário para evitar o problema.