我在此函数中遇到异常
{
CString strDocName;
if (!GetDocString(strDocName, CDocTemplate::docName) ||
strDocName.IsEmpty())
{
// use generic 'untitled'
ENSURE(strDocName.LoadString(AFX_IDS_UNTITLED));
}
pDocument->SetTitle(strDocName);
}
AFX_IDS_UNTITLED
在字符串表中定义,但在西班牙语资源下,但这没有帮助。
我从未使用过本地化资源,也不知道发生了什么。我已经被困在这个问题里3天了。如果有人能帮忙就好了。
注意:我已经将 2005 VS 代码移植到 2017 VS。
我认为这里的问题是您在代码中使用了
ENSURE
宏。如果你检查该宏的定义,它是:
#define ENSURE(cond) ENSURE_THROW(cond, ::AfxThrowInvalidArgException() )
LodString returns
FALSE`如果无法加载指定的字符串(在您的情况下MFC预定义符号它提到了上述ID。
你说:
在字符串表中定义,但在 Spanish 资源下,但这没有帮助。AFX_IDS_UNTITLED
我假设您使用英语时会出现此问题?如果是这种情况,您只需转到英语字符串表并添加一个新条目即可。在属性中输入
AFX_IDS_UNTITLED
并提供您要使用的短语。
你会发现这个ID是在文件中定义的
afxres.h
:
// General strings
#define AFX_IDS_OPENFILE 0xF000
#define AFX_IDS_SAVEFILE 0xF001
#define AFX_IDS_ALLFILTER 0xF002
#define AFX_IDS_UNTITLED 0xF003
#define AFX_IDS_SAVEFILECOPY 0xF004
#define AFX_IDS_PREVIEW_CLOSE 0xF005
#define AFX_IDS_UNNAMED_FILE 0xF006
#define AFX_IDS_HIDE 0xF011
因此您需要确保此标头包含在您的资源中。你怎么做到这一点?