MFC如何在窗口重绘中如何保持原有的视图不变
问题如上。本人要做一个有关文字处理的程序。
在视图类中响应了WM_CHAR消息,并输出,键盘按下的字符。
但是一旦改变窗口的大小,那原来输出的那些字符就都不见了。
请高手赐教。
难道要把响应的函数写在OnDraw函数里。
这样不现实啊。

程序代码:public:
CString m_Data; //在文档类,添加一个字串数据成员保存输入数据
void COnCharView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) //在视类,响应WM_CHAR消息
{
// TODO: Add your message handler code here and/or call default
COnCharDoc* pDoc = GetDocument(); //获得文档类对象
pDoc->m_Data += nChar; //修改数据内容
pDoc->UpdateAllViews(NULL); //刷新视图
CView::OnChar(nChar, nRepCnt, nFlags);
}
void COnCharView::OnDraw(CDC* pDC) //处理OnDraw虚函数
{
COnCharDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect Rect;
GetClientRect(&Rect);
pDC->DrawText(pDoc->m_Data,&Rect,DT_LEFT | DT_TOP); //绘制文档成员数据
}
程序代码:class COnCharDoc : public CDocument
{
protected: // create from serialization only
COnCharDoc();
DECLARE_DYNCREATE(COnCharDoc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(COnCharDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
CString m_Data;
virtual ~COnCharDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(COnCharDoc)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};COnCharDoc是我自己定义的类,继承自CDocument。