就是在用向导生成程序时,菜单中的保存、另存为、打开等等已经建立了实际的操作方法,我在别的地方需读写文件,但又不想重新写读写方法,想直接利用向导生成的方法,能不能实现?能的话请说明方法,谢谢!

解决方案 »

  1.   

    试试发送消息给doc,触发保存.
      

  2.   

    向导只能给你创建一个文件,并不能帮你把内容给填上(除非某些特定的工程)。最终还是得自己写一个函数。调用的话,CView里可以用GetDocument()来获得文档对象的指针。其它地方也可以通过CView来代理调用。
      

  3.   

    不知道你具体要做什么,参考一下文档类的Serialize函数。
      

  4.   

    怎么触发啊,找不到doc的触发条件,唯一和文件有关联的就是void CtestsplitterDoc::Serialize(CArchive& ar)函数,可在别处调用
    p->Serialize(CArchive& ar);
    或者
    CArchive ar;
    p->Serialize(CArchive& ar);
    都不合法。p是文档指针。
      

  5.   

    就是在菜单栏上再加个按钮,实现和向导生成的保存按钮一样的功能,有没有办法直接调用而不用重写什么onsave.
      

  6.   

    to 2楼:这个我知道,但通过向导只要在Serialize简单添加几个句子就行了,但是我还想在别的地方调用,不知道该怎么办
      

  7.   

    试试这样
    pDoc->OnSaveDocument("test.txt");//OnSaveDocument为doc的虚函数,点击保存按钮时也会调用此函数或者
    pWnd->SendMessage(WM_COMMAND, ID_FILE_SAVE, 0);//pWnd为doc相关联的view或frame
      

  8.   

    如果只是这样,你把按钮的ID设置为ID_FILE_SAVE不就行了。
    如果直接调储存函数,可以调用文档类的DoFileSave。
      

  9.   

    你是要读写当前active的view里的文件吗?如果这样的话,那直接调用OnFileOpen函数就是了。调用AfxGetApp()获取CWinApp的指针,然后调用pWinApp->OnFileOpen()就可以了。但是这样会同时更新View中的显示。如果你不想更新View的话就只能自己写函数了,调用CStudioFile挺容易的。
      

  10.   

    就是在菜单栏上再加个按钮,实现和向导生成的保存按钮一样的功能,有没有办法直接调用而不用重写什么onsave.
    CDocument::SaveModified
      

  11.   

    通过消息发送不行吗。妳在编写读写函数的时候,设置setmessage,在view中进行触发
      

  12.   

    最简单的方法还是像cnzdgs说的,把你的按钮的ID直接设成ID_FILE_SAVE,这样就能实现和File->Save菜单相同定额动作。也可以把你的按钮的函数映射到CMyDocument类中,这样就可以直接调用OnFileSave了,因为这个函数是protect的,所以外面不能调用。
      

  13.   

    7,8楼正解。谢过!因为还要实现别的功能,所以不能设相同id,只能用DoFileSave或SendMessage(WM_COMMAND, ID_FILE_SAVE, 0);