Привет,
Я подключаю API ExtTextOut для извлечения текста в определенной позиции из любого окна приложения (например, текста под курсором / кареткой в MS Word).В большинстве случаев я могу извлечь текст из функции ExtTextOut, а также его местоположение.
BOOL ExtTextOut(
__in HDC hdc,
__in int X,
__in int Y,
__in UINT fuOptions,
__in const RECT *lprc,
__in LPCTSTR lpString,
__in UINT cbCount,
__in const INT *lpDx
);
Местоположение текста получается одним из следующих способов:
- Он указывается в функции ExtTextOut в параметре прямоугольника отсечения (const RECT * lprc - это необязательный параметр)
- Указывается в качестве параметров ExtTextOut положения строки X, Y (относительно прямоугольника клиента окна).
Восстановить прямоугольник вокруг текста из контекста устройства, используя один из предоставленных API для отсечения областей / путей, например, API GetClipBox / GetClipRgn.
int GetClipBox (__in HDC hdc, __out LPRECT lprc);int GetClipRgn (__in HDC hdc, __in HRGN hrgn);
(http://msdn.microsoft.com/en-us/library/dd183435(v=VS.85).aspx)
Проблема заключается в том, что в некоторых приложениях нет ни одного из этих методов для получения позициитекст работает.Кроме того, что более неприятно, так это то, что при использовании некоторых API-интерфейсов для извлечения области / пути из контекста устройства он успешно возвращается и указывает, что для этого контекста устройства нет области / пути.
Мои вопросы:
Как могло случиться, что для контекста устройства не существует региона / пути?
Есть ли другой способполучить положение (или прямоугольник) текста, поскольку, как я понимаю, его положение должно быть где-то указано, чтобы окончательно нарисовать его на экране?
Любая помощь будет оценена.
Спасибо,
Momico.