现在要实现类似vc关闭时的功能,即
如果文件被改动,会弹出一个对话框,提示你“保存,不保存,取消”,
如果保存的话,就需要给mainframe上的那个保存按钮发个消息,怎么发啊?
或者,有没有其他的解决办法?谢大侠

解决方案 »

  1.   

    用SendMessage
    其实你直接调用保持按钮的消息函数就可以拉
      

  2.   

    获取该按钮(或其他窗口)的句柄,再用 SendMessage 发消息过去就行了。不过你要是为实现上述目的,没必要用这种方法。如果是基于文档-视图的程序,用序列化就行了。
      

  3.   

    是多文档视图的结构,所以我觉得还是用sendmessage好些(序列化根本就不会用)
    大侠能不能给句完整的sendmessage(???????)
      

  4.   

    AfxGetMainWnd()->SendMessage(WM_SYSCOMMAND,SC_CLOSE,0);
      

  5.   

    在mainframe里面怎么得到document的指针啊(如果要用yellowdawnhlm兄的方法的话)??
      

  6.   

    多文档视图没必要吧,当文件被改动时,它会自动在退出提示存盘的。要不看看 《VC++技术内幕》去,上面写得很清楚。一定要发消息的话,下面是我的一段代码,用于模拟按下其他程序对话框上的 OK 按钮。void CTrySpyDlg::OnBtonLetOK() 
    {
    // my code start here
    // hAppWnd 为其他窗口的句柄
    HWND hBtonWnd;
    LPRECT rcBtonOK;
    char pszCaption[12]; hBtonWnd = ::GetDlgItem(hAppWnd,IDOK);
    ::GetWindowText(hBtonWnd,pszCaption,12); // 模拟按下 OK 按钮
    ::SetCapture(hBtonWnd);
    ::SendMessage(hBtonWnd,WM_LBUTTONDOWN,0,0);
    ::SendMessage(hBtonWnd,WM_LBUTTONUP,0,0);
    ::ReleaseCapture();

    // my code end 
    }
      

  7.   

    (CFrameWnd*)AfxGetMainWnd()->GetActiveView()->GetDocument
      

  8.   

    如果是要用sendmessage方法,界面上 保存按钮的id是 ID_FILE_SAVE ,这个消息怎么写?我写成AfxGetMainWnd()->SendMessage(WM_SYSCOMMAND,ID_FILE_SAVE,0);结果没有响应
      

  9.   

    《VC++ 技术内幕》 第四版 Kruglinski  p342    windows 的许多面向文档的程序都会跟踪用户对文档的修改,用户试图关闭或退出程序时,系统会弹出一个消息框,询问用户是否保存文档。MFC 通过 CDocument 数据成员 m_bModified 直接支持这种功能 ......
      

  10.   

    this->m_wndToolBar.SendMessage(WM_COMMAND,ID_FILE_SAVE,0);