Доброе время суток всем!
Может быть кто-нибудь сможет подсказать, как разобраться с такой проблемой.
Я использую TextService из msftedit.dll для отрисовки RTF текста в нужном мне месте окна.
При этом мне необходимо узнать размер прямоугольника, в который будет вписываться этот текст при отрисовке, а потом передать этот прямоугольник в функцию отрисовки. Для получения размера прямоугольника я использую функцию TxGetNaturalSize, в которую передаю преобразованный в HIMETRIC прямоугольник клиентской части (это необязетельно действительно вся клиентская часть) окна. Полученный на выходе этой функции пересчитанный прямоугольник снова преобразуется из HIMETRIC в пиксели. Казалось бы все хорошо, но оказывается, что полученный здесь размер прямоугольника (точнее его высота) будет меньше на 2 — 4 пикселя по отношению к размеру фактически отрисованного текста, который рисуется функцией TxDraw, т. е. нижняя строка обрезается. Причем это происходит только с текстом, в котором есть отступы от левого края (например, текст используется маркированный список); при выводе текста без отступов, такого различия в рассчитанной высоте прямоугольника и в фактически отрисованной нет. Я читал, что это происходит из-за погрешности округления в алгоритмах функций TxGetNaturalSize и TxDraw. К сожалению, предложенный там метод решения у меня не сработал.
Может быть кто-то уже сталкивался с такой проблемой и нашел способ ее решить или обойти.
Заранее большое спасибо.
28.08.07 12:02: Перенесено модератором из 'C/C++' — Кодт