2017-02-20 7 views
2

Я вычисляю количество строк в расширенном элементе управления редактирования.TEXTMETRIC дает неправильную высоту при изменении размера текста с помощью колеса мыши

В настоящее время я использую следующий код

TEXTMETRIC tm; { 
    HDC hdc = GetDC(hwndRichEdit); 
    GetTextMetrics(hdc, &tm); 
    ReleaseDC(hwndRichEdit, hdc); 
} 

RECT editRect; 
GetClientRect(hwndRichEdit, &editRect); 
long int countLines = (editRect.bottom - editRect.top)/(tm.tmHeight + tm.tmExternalLeading); 

Код дающий из нужного количества строк, пока я не начинаю изменять размер текста с помощью колеса мыши + ЕЙ.

Возможно ли получить правильную высоту текста, даже если текст изменен с помощью колеса мыши?

N.B. Я пересчитываю количество строк с уведомлением EN_UPDATE.

ответ

1

Вы можете отправить сообщение EM_GETZOOM в элемент управления для получения текущего коэффициента масштабирования. Разделение значения countLines на коэффициент масштабирования должно приводить к правильному количеству строк. Используйте API-интерфейс MulDiv для реализации разделения.

+0

Спасибо! Он работает как ожидалось! – Lionishy