如何解决ENSURE异常strDocName.LoadStringAFX_IDS_UNTITLED
此功能出现异常
{
CString strDocName;
if (!GetDocString(strDocName,CDocTemplate::docName) ||
strDocName.IsEmpty())
{
// use generic 'untitled'
ENSURE(strDocName.LoadString(AFX_IDS_UNTITLED));
}
pDocument->SetTitle(strDocName);
}
AFX_IDS_UNTITLED
在字符串表中定义,但在西班牙语资源下,但这没有帮助。
我从未使用过本地化资源,也不知道正在发生什么。我被困在这里三天了。如果有人可以帮忙,那就太好了。
注意:我一直在将2005 VS代码移植到2017 VS。
解决方法
我认为这里的问题是您在代码中使用了ENSURE
宏。如果您检查该宏的definitoon,则为:
#define ENSURE(cond) ENSURE_THROW(cond,::AfxThrowInvalidArgException() )
LodString returns
为假,如果它无法加载指定的字符串(在您的情况下,MFC Predefined Symbols则提到了上述ID。
您说:
AFX_IDS_UNTITLED
是在字符串表中定义的,但是在西班牙语资源下,但这没有帮助。
我假设您使用英语时会发生此问题?在这种情况下,您只需要转到英语STRINGTABLE并添加一个新条目即可。在属性中输入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
因此,您需要确保此标头包含在您的资源中。你如何做到的?
- 在资源视图标签中右键单击您的资源文件。
- 选择资源包含。
- 确保已包含文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。