使用鼠标滚轮调整文本大小时,TEXTMETRIC的高度错误

时间:2017-02-20 18:33:37

标签: winapi richedit

我正在计算富编辑控件中的行数。

目前我正在使用下一个代码

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);

代码产生正确的行数,直到我开始通过鼠标滚轮+ ctr更改文本的大小。

即使使用鼠标滚轮调整文本大小,是否可以获得正确的文本高度?

N.B。我正在通过EN_UPDATE通知重新计算行数。

1 个答案:

答案 0 :(得分:1)

您可以向控件发送EM_GETZOOM消息以检索当前缩放比率。将countLines值除以缩放比率可以产生正确的行数。使用MulDiv API调用来实现除法。