GetTextAlign と SetTextAlign関数を使用して、デバイス コンテキストのテキスト配置クエリを実行して設定できます。 テキスト配置の設定によって、指定した位置に対するテキストの配置方法が決まります。 テキストは、位置の右または左に配置するか、その上の中央に配置することができます。また、ポイントの上または下に配置することもできます。
次の例は、どの水平配置フラグが設定されているかを決定する方法を示しています。
switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & GetTextAlign(hdc))
{
case TA_LEFT:
.
.
.
case TA_RIGHT:
.
.
.
case TA_CENTER:
.
.
.
}
SetTextAlign 関数を使用して、テキスト出力関数が呼び出されたときに現在の位置を更新することもできます。 たとえば、次の例では、SetTextAlign 関数を使用して、TextOut 関数が呼び出されたときに現在の位置を更新します。 この例では、cArial パラメーターは 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);
手記
選択したテキストが正しくレンダリングされないため、ScriptStringOutを使用している場合は、TA_UPDATECP SetTextAlign を使用しないでください。 このフラグを使用する必要がある場合は、問題を回避するために、必要に応じて設定を解除してリセットできます。