0

AFX_IDP_PARSE_INT是标准 MFC 错误消息的 id(它在 afxres.h 中定义),但在我的项目中它无法加载,这意味着LoadString返回FALSEGetLastError返回ERROR_RESOURCE_NAME_NOT_FOUND和 CString 保持为空。

即使我尝试在 InitInstanse 的开头加载它,也会发生这种情况:

BOOL CMyLegacyProject::InitInstance()
{
    CString string;
    if (!string.LoadString(AFX_IDP_PARSE_INT))
            AfxMessageBox(_T("Failed."));
}

相同的代码适用于新项目,但是 - MFC 的相同链接(我静态链接到它),相同的 WINVER,我尝试使其与旧项目相似,但我无法在新项目上重现该错误开始的项目。

4

1 回答 1

0

看起来您的资源没有正确构建。确保您的 .rc 文件也包含所有 AFX 资源。首先,我会尝试从头开始构建一个全新的项目,测试在其中加载字符串,然后看看默认的 .rc 文件是什么样的。

它应该包含一个名为“afxres.rc”的文件,即你的 RC 应该有这样的东西:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\MyRes.rc2"  // non-Microsoft Visual C++ edited resources
#include "afxres.rc"         // Standard components
#include "afxprint.rc"       // printing/print preview resources
#endif
于 2012-08-08T13:05:59.460 回答