Invalidate(true)没有输出,为什么?

时间:2012-08-04 15:48:17

标签: c++ windows mfc

这些代码是WM_CHAR处理程序,但在键入一些单词时不输出任何内容??

void CMy3456View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{

Invalidate(true);
//MessageBox(L"dfs");//enable this line,then the  outputs turns normal,why???
CClientDC dc(this);

CString c=L"";
c.Format(L"%c",nChar);
dc.TextOutW(0,0,c);

CView::OnChar(nChar, nRepCnt, nFlags);
}

1 个答案:

答案 0 :(得分:2)

你不应该在OnChar的窗口中绘画,你应该让你的WM_PAINT处理程序处理它。 Invalidate导致WM_ERASEBKGND和WM_PAINT很快跟进,这可能会删除TextOutW的结果。