Windows 确保时出现异常(strDocName.LoadString(AFX_id_UNTITLED))
我在这个函数中遇到了一个异常Windows 确保时出现异常(strDocName.LoadString(AFX_id_UNTITLED)),windows,winapi,visual-c++,mfc,Windows,Winapi,Visual C++,Mfc,我在这个函数中遇到了一个异常 { CString strDocName; if (!GetDocString(strDocName, CDocTemplate::docName) || strDocName.IsEmpty()) { // use generic 'untitled' ENSURE(strDocName.LoadString(AFX_IDS_UNTITLED)); } pDocument-&g
{
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。我认为这里的问题是您在代码中使用了
确保宏。如果您检查宏的定义,它是:
#定义确保(cond)确保抛出(cond,::AfxThrowInvalidArgException())
LodString返回
FALSE`如果它无法加载指定的字符串(在您的例子中,它提到了前面提到的ID)
你说:
AFX_IDS_UNTITLED
在字符串表中定义,但在西班牙语参考资料下定义,但这没有帮助
我假设这个问题是在您使用英语时发生的?如果是这种情况,您只需转到English STRINGTABLE并添加一个新条目。在属性中键入AFX\u IDS\u 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
因此,您需要确保此标题包含在您的资源中。您如何做到这一点
- 在资源视图选项卡中右键单击资源文件
- 选择资源包含
- 确保包含该文件
例外情况是什么?请提供“我不知道发生了什么”-调试器会告诉您。MFC附带源代码,因此您可以单步进入库代码。@IInspectable LoadString被定义为LoadStringA。我实际上无法进入函数的定义。@AlanBirtles它只是说sequenceEditor触发了一个断点。不知道是seg故障还是smthLoadString
显然是一个类成员。该类最终会将调用转发到Windows API。在此之前,您将检查参数。这对诊断问题完全有帮助。嗨,我之前就已经解决了。我今天查看了答案。问题是我必须在字符串表中包含35; define AFX_IDS_UNTITLED 0xF003我使用的语言的e。一旦这样做了,它的进展就没有问题了