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。