windows - ENSURE 的异常(strDocName.LoadString(AFX_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
在字符串表中定义,但在西班牙资源下,但这无济于事。我从未使用过本地化资源,也不知道发生了什么。我已经被困在这里3天了。如果有人能帮忙就好了。
注意:我一直在将 2005 VS 代码移植到 2017 VS。
解决方案
我认为这里的问题是您ENSURE
在代码中使用了宏。如果您检查该宏的定义,它是:
#define ENSURE(cond) ENSURE_THROW(cond, ::AfxThrowInvalidArgException() )
LodString returns
FALSE` 如果它无法加载指定的字符串(在你的情况下MFC 预定义符号它提到了上述 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
因此,您需要确保此标头包含在您的资源中。你怎么做到这一点?
- 在“资源视图”选项卡中右键单击您的资源文件。
- 选择资源包括。
- 确保包含该文件。
推荐阅读
- jenkins - Jenkins 和 bitbucket 网络挂钩
- c# - 我正在尝试使用来自 Avaya 办公室管理器 API 的数据。CertificateValidationCallback 导致错误
- sql - 如何在 oracle sql 中按日期执行 CASE
- c# - 我使用 SvcUtil 从 WSDL 创建类。我要反序列化成什么?
- swift - GMSMarker 渲染和延迟问题
- node.js - Azure Functions NodeJS:使用 Azure Visual Studio 代码扩展时 Https 请求不起作用
- ruby-on-rails - 循环在本地环境中工作,但在部署到 Heroku 时不工作
- azure - Azure Blob 存储中的 HTML 无法加载网站图标(错误 400)
- python - 查找python中日期列表之间的差异
- python - 在 Flask 中扩展一个蓝图,将其拆分为多个文件