覆盖CDocument OnFileSave()

时间:2014-03-22 19:01:00

标签: visual-c++ mfc

我该怎么做?如果你可以请包括消息地图的代码和功能本身,那将非常感激。

编辑:

更具体地说,我想知道OnFileSave()如何链接到OnSaveDocument(LPCSTR lpszPathName) OnFileSave如何获取lpszPathName?

2 个答案:

答案 0 :(得分:1)

您不需要做任何特别的事情来覆盖OnSaveDocument(...)它已经是CDocument中的虚拟功能,因此您的派生类只能在其中声明virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);' s标题,然后在文档中实现它。消息映射中不需要任何内容​​。框架将OnSaveDocument作为OnFileSave的一部分调用,OnFileSave是ID_FILE_SAVE基类中的处理程序。 lpszPathName在OnFileSafe调用时引用m_strPathName,它在打开文件或调用SetPathName时设置。如果保存时它为空,则会提示用户输入文件名。

答案 1 :(得分:0)

CDocument :: OnFileSave是“保存”菜单命令的消息处理程序。要自己处理它,请将它放在文档类消息映射中:

ON_COMMAND(ID_FILE_SAVE, OnFileSave)

并添加你的功能:

void CYOURDOCUMENT::OnFileSave()
{
CDocument::OnFileSave();
}

要查看它所做的一切,请在函数中设置断点并开始单步执行。