VC6下,生成基于CEditView的工程,想在视图输出字符串,发现这样不行,不知道什么原因。
修改CEditView::OnDraw(CDC pDC)
如下:
    CEditView::OnDraw(CDC pDC)
{    
pDC->TextOut(0,0,"Hello,world!");
}
结果没有任何输出。
但是在CView::OnDraw(CDC pDC)
中照做就行,有Hello,World!输出。
很奇怪,难道是用别的函数吗?
我想在CEditView的视图区输出字符串,怎么办?

解决方案 »

  1.   

    CEditView主要是处理文本文件的处理的。
    它在刷新屏幕时不像CView那样调用的是OnDraw()。
    所以在OnDraw()写的输出字符串也就无效了。
      

  2.   

    OnPaint() 
    {
    CPaintDC dc(this); // device context for painting
    dc.TextOut(200,200,"ddd");
    }
      

  3.   

    是不是,刷屏幕的时候用的是onpaint()
      

  4.   

    不是,是CEditView中包含一個CEdit控件,可以使用GetEditCtrl得到,此控件的刷新在CEditView::OnPaint中實現.
      

  5.   

    如果修改了OnPaint()后,就打不开文本文件了
      

  6.   


    CEditviewDoc* pDoc = GetDocument();
    如果你的文檔事txt的話,得到文檔,把裏面的東西讀出來就可以了.
      

  7.   

    只要添加了CEditView的OnPaint()函数,就不能打开文本了。
      

  8.   

    第一种方法:
    改写document的OnNewDocument():
    BOOL CMyDoc::OnNewDocument()
    {
    if (!CDocument::OnNewDocument())
    return FALSE; // TODO: add reinitialization code here
    // (SDI documents will reuse this document)
    ((CEditView*)m_viewList.GetHead())->SetWindowText("Hello World!\r\n");
             return TRUE;}
      

  9.   

    是这样的,我原来的程序是基于CView的,现在需要存储和编辑视图区中的数据,就想建一个基于CEditView的工程,把原来的代码复制过去,结果发现不行,原来在视图区输出的函数,在CEditView下没有了作用。
      

  10.   

    第二种方法:为CMyView增加一个成员函数DisplayString(LPCTSTR lpstring):
    CMyView : public CEditView
    {
      .......
      public:
         void DisplayString(LPCTSTR lpstring);
    }CMyView :: DisplayString(LPCTSTR lpstring)
    {
        int len = GetWindowTextLength();
    GetEditCtrl().SetSel(len,len);
    GetEditCtrl().ReplaceSel(lpMsgStr);
    }在适当的时候调用这个成员函数就可以了。如在document的OnNewDocument()中,进行调用:
    BOOL CMyDoc::OnNewDocument()
    {
    if (!CDocument::OnNewDocument())
    return FALSE; // TODO: add reinitialization code here
    // (SDI documents will reuse this document)
    ((CMyView*)m_viewList.GetHead())->DisplayString("Hello World!\r\n");
             return TRUE;}注意不能在OnDraw和OnPaint中调用。否则,会显示出很多的"Hello world!"。
      

  11.   

    上面的代码有错,正确的:CMyView :: DisplayString(LPCTSTR lpstring)
    {
        int len = GetWindowTextLength();
    GetEditCtrl().SetSel(len,len);
    GetEditCtrl().ReplaceSel(lpstring);
    }