2 cppabc cppabc 于 2016.01.19 15:42 提问

VC多文档视图 error C3861: "AfxGetFileTitle"找不到标识符

我在做的一个多文档视图的工程里处理关闭视图之后的处理文件的相关操作,就是关闭试图后程序出现提示"是否保存对****的更改?"的对话框,这个对话框是在SaveModified()函数中处理出现的,我需要对用户选择点击"是"或者"否"以及"取消"三个按钮后在重载的SaveModified中做处理,此函数中的默认处理中有个函数是AfxGetFileTitle,因为我只在原来的版本基础上处理选择"否"的情况,所以其他的都不做改动,但在编译我自己的版本时出现提示说"error C3861: “AfxGetFileTitle”: 找不到标识符"这个提示,是什么原因呢?

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.19 16:25

这是一个没有公开的函数,你可以用CFile::GetFileTitle代替

cppabc
cppabc 我找到了,恰恰和你说的相反,这是一个全局的公用函数
接近 2 年之前 回复
cppabc
cppabc 没公开是指什么?
接近 2 年之前 回复
cppabc
cppabc 怎么得知的,这不是一个公开的函数?
接近 2 年之前 回复
cppabc
cppabc   2016.01.19 16:53

代码我现在就基本还买修改只是重载了一次啊,内容没怎么变,代码如下:
代码基本上没做声明修改,代码如下:
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”: 找不到标识符”的内容

cppabc
cppabc   2016.01.20 17:01

有人能回到这个问题吗?,我只想在引用原内容的情况下加入其他的操作。

91program
91program   Ds   Rxr 2016.01.19 16:14

如果你不修改,能否编译通过?应该是可以吧。
这样,就需要你研究一下你是如何修改代码的?或者,将代码贴出来分析。

cppabc
cppabc 代码在上面!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!