У меня есть таймер, который я показываю пользователю в RichEdit20A
, который находится внутри CDialog
. Проблема заключается в том, что каждый раз, когда я обновляю RichEdit20A
, экран мерцает.
Поскольку у меня в диалоге несколько RichEdit20A
, у меня есть метод ниже, который я использую для их обновления. Я пробовал ModifyStyle(0, WS_CLIPCHILDREN, 0);
OnInitDialog
, но он стирает все мои RichEdit20A
тексты. Я также попытался RedrawWindow(Null,Null, RDW_Erase)
- Диалог все еще мерцает и RedrawWindow(Null,Null, RDW_Invalidate)
- Весь текст пишется поверх старого, что делает его нечитаемым.
//UpdateData(TRUE);
if(!pRECtrl)
return;
CHARFORMAT cf = {0};
cf.cbSize = sizeof(cf);
cf.dwMask = (bold ? CFM_BOLD : 0) | (italic ? CFM_ITALIC : 0) | CFM_COLOR;
cf.dwEffects = (bold ? CFE_BOLD : 0) | (italic ? CFE_ITALIC : 0) |~CFE_AUTOCOLOR;
cf.crTextColor = color;
pRECtrl->SetSel(0, -1); // Set the cursor to the end of the text area and deselect everything.
pRECtrl->Clear();
pRECtrl->ReplaceSel(text);
// Apply formating to the just inserted text.
pRECtrl->SetSel(0, pRECtrl->GetTextLength());
pRECtrl->SetSelectionCharFormat(cf);
//UpdateData(FALSE);
Invalidate();
Я знаю, что Invalidate является причиноймерцание и эта двойная буферизация (я никогда не делал этого раньше) - вот что используется для исправления такого рода проблем для CViews ... и я не знаю, что делать, чтобы остановить мерцание для CDialog, который является окномЯ использую для моей программы. Любая помощь будет оценена. Спасибо!