MF C: как уменьшить временные затраты на OnInitialUpdate () для прокрутки? - PullRequest
3 голосов
/ 09 марта 2020

Мне нужно напечатать данные из многих строк. Каждая строка может иметь перенос текста, поэтому высота меняется. Чтобы сделать прокрутку, мне нужно вывести общую высоту. Поскольку каждая строка может иметь различную высоту, я могу только go через каждую строку сложить высоты, как показано ниже.

void CMyScrollView::OnInitialUpdate()
{
    ...
    for (auto &l: lines)
    {
        DrawText(dc, l.text, &rc, DT_EDITCONTROL | DT_WORDBREAK | DT_CALCRECT);
        total_height += rc.Height();
    }
    SetScrollSizes(MM_TEXT, CRect(..., total_height));
}

Я обнаружил, что DrawText (... DT_CALCRECT) "довольно дорого даже без фактического рисунка. Есть ли способ ускорить процесс в таком случае?

...