Visual c++ 向CEdit控件追加文本后出现奇怪的字体效果
在注意到界面更新缓慢之后,我按照上的建议向CEdit控件添加文本 然后我换了Visual c++ 向CEdit控件追加文本后出现奇怪的字体效果,visual-c++,textbox,mfc,append,cedit,Visual C++,Textbox,Mfc,Append,Cedit,在注意到界面更新缓慢之后,我按照上的建议向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);
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());
}
借
现在,当我运行它时,我注意到一个奇怪的字体模糊,因为它在图像中日志文本框的前两行中可见
原因是什么?我如何修复它
我解决了:)
似乎如果我暂时禁用重画,问题就消失了 您显示的代码没有问题。看起来您的系统或对话框上没有启用cleartype字体,所有字体看起来都很模糊。由于某些原因,编辑控件未正确重新绘制。看起来第一行画了4遍,第二行画了3遍。。。最后一行画了一次,背景没有重新画。显示对话框*.rc代码和其他信息来重现这种效果。这不是你说的方式吗?我完全按照您在我的代码中描述的方式和顺序看到它们!对不起,我有阅读障碍!这是正确的用法。您仍然希望仔细检查
OnEraseBkgnd
等的消息覆盖。如果有。将移动。SetRedraw(TRUE)代码>经过行滚动()代码>调用“使它更脆/更干净”?@franji1是的,这是有意义的,但现在一切都在正常工作!通常,SetRedraw FALSE/TRUE
调用需要平衡/格式良好。它可能“工作”,但我会在调用LineScroll
后尝试SetRedraw(TRUE)
,看看它是否“正常”工作。如果您确实尝试了,但没有成功,我理解您不想添加SetRedraw(TRUE)
调用。。
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();
}
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();
}