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

TEXTMETRIC is giving wrong height when resizing text with mouse wheel

我正在计算 rich edit 控件中的行数。

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

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 通知的行数。

您可以发送EM_GETZOOM message to the control to retrieve the current zoom ratio. Dividing the countLines value by the zoom ratio should yield the correct line count. Use the MulDiv API调用来实现除法。