问题描述
- VC多文档视图 error C3861: "AfxGetFileTitle"找不到标识符
-
我在做的一个多文档视图的工程里处理关闭视图之后的处理文件的相关操作,就是关闭试图后程序出现提示"是否保存对****的更改?"的对话框,这个对话框是在SaveModified()函数中处理出现的,我需要对用户选择点击"是"或者"否"以及"取消"三个按钮后在重载的SaveModified中做处理,此函数中的默认处理中有个函数是AfxGetFileTitle,因为我只在原来的版本基础上处理选择"否"的情况,所以其他的都不做改动,但在编译我自己的版本时出现提示说"error C3861: “AfxGetFileTitle”: 找不到标识符"这个提示,是什么原因呢?
解决方案
这是一个没有公开的函数,你可以用CFile::GetFileTitle代替
解决方案二:
代码我现在就基本还买修改只是重载了一次啊,内容没怎么变,代码如下:
代码基本上没做声明修改,代码如下:
BOOL CCNCMonitorDoc::SaveModified()
{
if (!IsModified())
return TRUE; // ok to continue
CDataRecoveryHandler *pHandler = NULL;
if (AfxGetApp())
{
// if close is triggered by the restart manager, the file
// will be auto-saved and a prompt for save is not permitted.
pHandler = AfxGetApp()->GetDataRecoveryHandler();
if (pHandler != NULL)
{
if (pHandler->GetShutdownByRestartManager())
return TRUE;
}
}
// get name/title of document
CString name;
if (m_strPathName.IsEmpty())
{
// get name based on caption
name = m_strTitle;
if (pHandler != NULL)
{
// remove "[recovered]" from the title if it exists
CString strNormalTitle = pHandler->GetNormalDocumentTitle(this);
if (!strNormalTitle.IsEmpty())
name = strNormalTitle;
}
if (name.IsEmpty())
ENSURE(name.LoadString(AFX_IDS_UNTITLED));
}
else
{
// get name based on file title of path name
name = m_strPathName;
AfxGetFileTitle(m_strPathName, name.GetBuffer(_MAX_PATH), _MAX_PATH);
name.ReleaseBuffer();
}
CString prompt;
AfxFormatString1(prompt, AFX_IDP_ASK_TO_SAVE, name);
switch (AfxMessageBox(prompt, MB_YESNOCANCEL, AFX_IDP_ASK_TO_SAVE))
{
case IDCANCEL:
return FALSE; // don't continue
case IDYES:
// If so, either Save or Update, as appropriate
if (!DoFileSave())
return FALSE; // don't continue
break;
case IDNO:
// If not saving changes, revert the document
break;
default:
ASSERT(FALSE);
break;
}
return TRUE; // keep going
}
我先要修改的地方是在
case IDNO:
// If not saving changes, revert the document
这个地方添加用户电机"否"按钮不保存文件的处理,这个SaveModified函数是CDocument类的一个虚函数,里面有个AfxGetFileTitle函数,我现在在自己的doc类中的重载函数里把所有内容都弄进去,其他都没改,编译时就提示“error C3861: “AfxGetFileTitle”: 找不到标识符”的内容
解决方案三:
有人能回到这个问题吗?,我只想在引用原内容的情况下加入其他的操作。
解决方案四:
如果你不修改,能否编译通过?应该是可以吧。
这样,就需要你研究一下你是如何修改代码的?或者,将代码贴出来分析。