2

RichEdit20A内にある でユーザーに表示するタイマーがありますCDialog。問題は、更新するたびにRichEdit20A画面がちらつくことです。

ダイアログにいくつかあるのでRichEdit20A、それらを更新するために使用するメソッドを以下に示します。試してみましたが、すべてのテキストModifyStyle(0, WS_CLIPCHILDREN, 0); OnInitDialogが消去されます。RichEdit20A私も試してみましたRedrawWindow(Null,Null, RDW_Erase)--Dialog まだちらつきます --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のちらつき。どんな助けでも大歓迎です。ありがとうございました!

4

0 に答える 0