我在CMYView中自定义了一个方法CMYView::GetAFileName()
从CMyDoc成员变量中得到一个字符串,作为文件名。
要求:
1.在新的窗口中打开。
2.在墨一个行的后面把文件的内容读出来,追加我当前的做法1:(部分代码)
void CMYView::GetAFileName()
{
   ....
CString filename = "c:\work\test.txt";
CMYDoc::OnOpenDocument(filename);
   ...
}
显示illegal call of non-static member function
做法2:把OnFileCall声明为static
//static void OnFileCall(char *);
void CMYView::GetAFileName()
{
   ....
CString filename = "c:\work\test.txt";
CMYDoc::tempFileCall((char*)filename);
   ...
}
void CMyDoc::tempFileCall(char *filename)
{
 OnOpenDocument(filename)
}
错误依旧!!!
那位高人职点!!
先送100分!
能详细解答问题1,2的再送100分!!决不食言!

解决方案 »

  1.   

    OnOpenDocument的函数原型为:
    virtual BOOL OnOpenDocument( LPCTSTR lpszPathName );
    你把原来的程序改为
    CMYDoc::OnOpenDocument((LPCTSTR)filename);试一试
      

  2.   

    CString filename = "c:\work\test.txt";
    应该是CString filename = "c:\\work\\test.txt";
    给分!!!!!!!!!!!!!!!!
      

  3.   

    CString filename="c:\\work\\test.txt";
    CMyDoc* pDoc = GetDocument();
    pDoc->OnOpenDocument(filename);
      

  4.   

    先行谢过各位。各位说的都有部分道理,让我慢慢修正。
    to:zhenxizhou(天上人间) 
    传入参数不对,按照你的修改。
    但是不能用CMYDoc::来调用。错误依旧,正确的方法应该如“laolio(坐看云起时) ”兄台所写,具体原因,不知道能否由他回答,我马上就分配分数。
    to:9731boy(鸟牙) 
    你的功劳我记住了,解分的时候,不会食言
    to:laolio(坐看云起时) 
    为什么一定要这样调用?
    CMyDoc*  pDoc  =  GetDocument();  
    pDoc-  >OnOpenDocument(filename); 
    直接指定CMYDoc::OnOpenDocument(LPCTSTR filename)不可以吗?
    可以给解释一下吗?或者推荐一下参考资料?
      

  5.   

    C++中nonstatic的函数隐含了一个this参数,
    可能CMYDoc的OnOpenDocument(LPCTSTR filename)中用到了CMYDoc中其他的
    非static成员变量,没有this指针,结果就出现:
    illegal call of non-static member function
    所以一定要象9731boy(鸟牙)那样来处理。