Метод ITextServices::TxDraw (textserv.h)
Рисует объект текстовых служб.
Синтаксис
HRESULT TxDraw(
[in] DWORD dwDrawAspect,
LONG lindex,
[in] void *pvAspect,
[in] DVTARGETDEVICE *ptd,
[in] HDC hdcDraw,
[in] HDC hicTargetDev,
[in] LPCRECTL lprcBounds,
[in] LPCRECTL lprcWBounds,
[in] LPRECT lprcUpdate,
BOOL(* )(DWORD) pfnContinue,
DWORD dwContinue,
LONG lViewId
);
Параметры
[in] dwDrawAspect
Тип: DWORD
Указывает пропорции для рисования (то есть, как должен быть представлен объект). Аспект рисования может иметь одно из следующих значений.
lindex
Тип: LONG
Не поддерживается.
[in] pvAspect
Тип: void*
Сведения об оптимизации рисования.
[in] ptd
Тип: DVTARGETDEVICE*
Целевое устройство.
[in] hdcDraw
Тип: HDC
Отрисовка контекста устройства.
[in] hicTargetDev
Тип: HDC
Контекст целевой информации.
[in] lprcBounds
Тип: LPCRECTL
Ограничивающий (клиентский) прямоугольник.
[in] lprcWBounds
Тип: LPCRECTL
Прямоугольник обрезки для метафайлов.
[in] lprcUpdate
Тип: LPRECT
Область обновления внутри lprcBounds.
pfnContinue
Тип: BOOL CALLBACK*
Не поддерживается.
dwContinue
Тип: DWORD
Параметр для передачи для продолжения функции.
lViewId
Тип: LONG
Указывает представление для рисования.
Значение | Значение |
---|---|
|
Нарисуйте активное представление inplace. |
|
Рисование представления, отличного от активного представления на месте; например, предварительный просмотр. |
Возвращаемое значение
Тип: HRESULT
Возвращаемое значение обычно S_OK.
Комментарии
Этот метод отрисовывает объект текстовых служб. Он принимает те же параметры, что и соответствующий метод IViewObject::D raw в OLE, с дополнительными параметрами lprcUpdate и lViewId . Его можно использовать, когда узел активно или неактивен на месте.
Параметр lprcBounds предоставляет прямоугольник для отрисовки, также называемый клиентским прямоугольником. Этот прямоугольник представляет положение и экстент всего изображения отрисовываемого объекта текстовых служб. Это выражается в логической системе координат hdcDraw. Если lprcBounds имеет значение NULL , элемент управления должен быть активным. В этом случае объект текстовых служб должен отображать активное представление на месте (то есть клиентский прямоугольник, который можно получить, вызвав TxGetClientRect на узле).
Если параметр lprcUpdate не равен NULL, он предоставляет прямоугольник для обновления внутри этого клиентского прямоугольника в логической системе координат hdcDraw. Если lprcUpdate имеет значение NULL, следует закрасить весь клиентский прямоугольник.
Объект текстовых служб должен отображаться с соответствующим коэффициентом масштабирования, который можно получить из клиентского прямоугольника и собственного размера, заданного TxGetExtent. Описание коэффициента масштабирования см. в разделе TxGetExtent.
Общие комментарии к узлам OLE и ITextServices::TxDraw (также для ITextServices::OnTxSetCursor и ITextServices::TxQueryHitPoint):
Узел OLE может в любое время вызывать метод ITextServices::TxDraw с любым контекстом устройства отрисовки или клиентским прямоугольником. Неактивный объект OLE сохраняет только экстент. Чтобы получить прямоугольник для отрисовки, узел вызывает метод IViewObject::D raw . Этот прямоугольник действителен только для область этого метода. Таким образом, один элемент управления может отображаться последовательно в разных прямоугольниках и разных контекстах устройства, например, так как он отображается одновременно в разных представлениях на экране.
Как правило, клиентский прямоугольник и контекст устройства, передаваемые в ITextServices::TxDraw , не должны кэшироваться, так как это приведет к тому, что объект текстовых служб будет пересчитывать линии для каждого отрисовки, что помешает производительности. Вместо этого объект текстовых служб может кэшировать сведения, вычисляемые для определенного клиентского прямоугольника и контекста устройства (например, разрывы строк). Однако при следующем вызове ITextServices::TxDraw необходимо проверить правильность кэшированных сведений перед их использованием и при необходимости повторно создать обновленные сведения.
Кроме того, следует проявлять большую осторожность, когда элемент управления активен на месте. Эта проблема еще более сложна, так как ITextServices::TxDraw по-прежнему можно вызывать для отрисовки других представлений, чем активное на месте. Другими словами, клиентский прямоугольник, передаваемый в ITextServices::TxDraw , может отличаться от активного (передается в ITextServices::OnTxInPlaceActivate и получается через TxGetClientRect на узле).
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | textserv.h |
DLL | Msftedit.dll |
См. также раздел
Основные понятия
Другие ресурсы
Справочные материалы