Странный эффект шрифта после добавления текста в элемент управления CEdit - PullRequest
0 голосов
/ 28 ноября 2018

Заметив медлительность обновления интерфейса, я последовал совету по CEdit SetWindowText с большой скоростью для добавления текста в элемент управления CEdit.

Затем я заменил

void CMyPropertyPage::Log(const CString& sLog)
{
    CString str;
    m_cLogEdit.GetWindowText(str);

    if (!str.IsEmpty())
        str += _T("\r\n");

    str += sLog;

    m_cLogEdit.SetWindowText(str);
    m_cLogEdit.LineScroll(m_cLogEdit.GetLineCount());
}

by

void CMyPropertyPage::Log(const CString& sLog)
{
    m_cLogEdit.SetSel(-1,-1);
    m_cLogEdit.ReplaceSel(sLog + L"\r\n");

    //m_cLogEdit.LineScroll(m_cLogEdit.GetLineCount());

    UpdateData(FALSE);
    UpdateWindow();
}

Теперь, когда я запускаю его, я замечаю странное размывание шрифта, которое видно в первых двух строках текстового поля «Журнал» на изображении.

В чем причина и как я могу это исправить?

enter image description here

1 Ответ

0 голосов
/ 29 ноября 2018

Я решил:)

void CMyPropertyPage::Log(const CString& sLog)
{
    m_cLogEdit.SetRedraw(FALSE);

    m_cLogEdit.SetSel(-1,-1);
    m_cLogEdit.ReplaceSel(sLog + L"\r\n");

    m_cLogEdit.SetRedraw(TRUE);

    m_cLogEdit.LineScroll(m_cLogEdit.GetLineCount());

    UpdateData(FALSE);
    m_cLogEdit.UpdateWindow();
}

Кажется, если я временно отключить перерисовку, проблема исчезла!

...