В соответствии с документацией MSDN, когда вы установили флаг TA_UPDATECP с помощью SetTextAlign () , TextOut () игнорирует параметры своей позиции в пользу текущей позиции контекста устройства. Не видя ваш код, я подозреваю, что ваш алгоритм рисования вызывает TextOut () с текущей позицией, которая немного отличается в зависимости от выбора.
В качестве стратегии отладки вы можете вызвать GetCurrentPositionEx () непосредственно перед вызовом TextOut (), чтобы получить текущую позицию и убедиться, что она соответствует вашему ожиданию того, где должен быть нарисован текст.