在文档类~Doc中保存了一个变量 CString m="hello";为什麽在试图类 ~view.cpp中不能调用它呢?我想在view::OnDraw
中访问它,使hello显示在屏幕上(mfc但文档),可是说我“g:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\testinput\testinputView.cpp(56): error C2065: “m” : 未声明的标识符
”可我明明已经include ~Doc.h了?!为什麽不能访问?
/////////CfirstappDoc.h////////////////////////////////
// 属性
public:
CString m_string;
/////////CfirstappDoc.cpp//////////////////////////////////
BOOL CfirstappDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE; // TODO:在此添加重新初始化代码
// (SDI 文档将重用该文档)
m_string="lyo jsp";
          return TRUE;
}
///////////////CfirstappView.h//////////////////////////////
void CfirstappView::OnDraw(CDC* pDC)
{
CfirstappDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);


// TODO: 在此处为本机数据添加绘制代码
//CString mystr("hello world!"); pDC->TextOut(199,100,m_string);
}
我知道可以在CfirstappView.h中声明此变量,而且编译成功了,但我不想在CfirstappView.h或CfirstappView.cpp中声明,想在文档类中声明它,再在试图类中调用它,可不知为什麽不行?请指点!

解决方案 »

  1.   

    pDC->TextOut(199,100,pDoc->m_string);
      

  2.   

    我又把它改为:
    C~View::OnDraw(CDC *pDC)
    {
         C~Doc* pDoc = GetDocument();
         pDC-〉TextOut(100,100,pDoc->m_string);
    }
    编译成功,但不能显示出M来在屏幕上!?
      

  3.   

    也许改变了映射模式或什么的。多试试:
    void CfirstappView::OnDraw(CDC* pDC)
    {
    CfirstappDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    if(pDoc->m_string == "")
             { 
               AfxMessageBox("因为pDoc->m_string是空的");
             }
    pDC->TextOut(100,  100, pDoc->m_string);
              pDC->TextOut(100,-100, pDoc->m_string);}
      

  4.   

    可以显示了!是因为第一次用OnDraw函数不能显示后,我又添加了一个OnPaint函数,想用它显示,还是不行!后来我用楼上的方法不行后,把OnPaint函数删除掉,居然OnDraw就可以显示了m_string了?这是什麽问题啊?OnPaint能阻止OnDraw的正常运行吗?
      

  5.   

    请问OnDraw和OnPaint到底有什么区别呢?
      

  6.   

    我并没有在OnDraw中调用OnPaint函数啊,都是OnDraw和OnPaint都是我~View.cpp中的独立函数,谁能解释这个问题?多谢!
      

  7.   

    在这两个函数中因为OnDraw的优先级没有OnPaint的优先级高,所以当两者一起出现在同一个函数中时,因为它们的独立性自然将调用OnPaint函数,但在SDI中Onpaint所要显示的内容将不能出现,所以会有你所说的结果。
      

  8.   

    既然是独立的,那先调用OnPaint,一看没有要显示的内容后不是就要调用OnDraw了吗?为什莫不能显示M呢?
      

  9.   

    http://xmsoft.xiloo.com
    这是一款很好的电脑辅助工具。包括以下几大功能:·文件粉碎 ·文件分割·文件合并·生成网页索引·文本文件转成网页文件·简繁体转换·注册表修复等
      

  10.   

    拜托,不要开玩笑了。To 前进:能不能再解答的详细点,就是我后面追问的那个OnPaint。
    To kingcom_xu:我的刀是做饭用的。
      

  11.   

    在这两个函数中因为OnDraw的优先级没有OnPaint的优先级高?OnDraw就不被执行了吗?
      

  12.   

    onpaint()响应wm_paint消息,他会调用ondraw,但你自己重载了onpaint().
    你可以看看源码.