Есть окно произвольного размера, на которое выводится TextOut-ом какой-то текст. Надо вывести очередное слово (char word[]). Как проверить, поместится ли это слово в рабочую область окна на этой строке или надо переходить на новую строку???
Как я понимаю, надо:
1. определить текущее положение каретки в окне
2. определить длину слова функцией GetTextExtentPoint32
3. проверить влезет ли это слово в конец строки…
Подскажите, как сделать пункт №1? И что из чего вычитать в пункте №3?
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, klmn, Вы писали:
K>>P.S. Все на чистом WIN API
RB>А почему не использовать DrawText с параметром DT_WORDBREAK ?
Как именно её припменить в моём случае?
Re: перевод строки
От:
Аноним
Дата:
25.08.05 08:19
Оценка:
Здравствуйте, klmn, Вы писали:
K>Есть окно произвольного размера, на которое выводится TextOut-ом какой-то текст. Надо вывести очередное слово (char word[]). Как проверить, поместится ли это слово в рабочую область окна на этой строке или надо переходить на новую строку??? K>Как я понимаю, надо: K>1. определить текущее положение каретки в окне K>2. определить длину слова функцией GetTextExtentPoint32 K>3. проверить влезет ли это слово в конец строки… K>Подскажите, как сделать пункт №1? И что из чего вычитать в пункте №3?
K>P.S. Все на чистом WIN API
K>спсибо.
а не проще хранить где-нить все инфу для окна
и использовать DrawText,
у него есть рект в параметрах и он
сам перенесет слова
Re[3]: перевод строки
От:
Аноним
Дата:
25.08.05 08:23
Оценка:
Здравствуйте, klmn, Вы писали:
K>Здравствуйте, rus blood, Вы писали:
RB>>Здравствуйте, klmn, Вы писали:
K>>>P.S. Все на чистом WIN API
RB>>А почему не использовать DrawText с параметром DT_WORDBREAK ?
K>Как именно её припменить в моём случае?
int DrawText(
HDC hDC, // handle to DC
LPCTSTR lpString, // text to draw — тут вся строка
int nCount, // text length — ее размер
LPRECT lpRect, // formatting dimensions — клиент-рект окна
UINT uFormat // text-drawing options — DT_LEFT | DT_WORDBREAK
);
Здравствуйте, klmn, Вы писали:
K>1. определить текущее положение каретки в окне
Функция GetCaretPos копирует позицию каретки, в рабочих координатах, в определяемой структуре POINT.
Синтаксис
BOOL GetCaretPos
(
LPPOINT lpPoint // адрес структуры, которая принимает координаты
);
Параметры
lpPoint
Указывает на структуру POINT, которая принимает рабочие координаты каретки.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение отлично от нуля. Если функция потерпит неудачу, возвращаемое значение нулевое. Чтобы получить расширенные данные об ошибках, вызовите GetLastError.
Замечания
Позиция каретки всегда дана в рабочих координатах окна, которое содержит каретку.
K>2. определить длину слова функцией GetTextExtentPoint32 K>3. проверить влезет ли это слово в конец строки… K>Подскажите, как сделать пункт №1? И что из чего вычитать в пункте №3?
K>P.S. Все на чистом WIN API
K>спсибо.