我已将我的项目从VC ++ .NET 2003升级到VS2010。我收到调试错误:找不到字符串资源7176。我可以看到字符串表包含字符串资源7176的字符串,但是当我调用Custom_MessageBox()时仍然会显示错误,这在同一项目的其他模块中运行良好。
在TestResource.rh
中#define IDS_SHOWWARNING_TEST 7176
在TestResource.rc
中#include "DevControl.rh"
STRINGTABLE
BEGIN
IDS_SHOWWARNING_TEST "Test1"
END
在TestResource.cpp
中 BOOL TestFunc(hParentWnd)
{
LPCTSTR myString = "Hello"
Custom_MessageBox( hParentWnd,
MAKEINTRESOURCE(IDS_SHOWWARNING_TEST),
MB_OK | MCC_INFORMATION );
}
如果我传递myString代替MAKEINTRESOURCE(IDS_TEST),那么它的效果非常好。
请找到Custom_MessageBox()的定义。如果我看到pszText的值,它会显示错误的指针。 MAKEINTRESOURCE无法评估IDS_SHOWWARNING_TEST。我不知道原因。
const int CUS_RETURN_ERROR = (int)0xFFFF;
int cdecl Custom_MessageBox( HWND hwndOwner, LPCTSTR pszText, UINT uStyle, ... )
{
// handle variable parms
va_list sVarArgs;
va_start(sVarArgs, uStyle);
if (!pszText)
return CUS_RETURN_ERROR;
CMDMsgDialog Dlg;
int nReturn = Dlg.MessageDialog(hwndOwner, pszText, uStyle, sVarArgs);
va_end(sVarArgs);
return nReturn;
}
答案 0 :(得分:1)
您已在TestResource.rh中定义了IDS_SHOWWARNING_TEST:
#define IDS_SHOWWARNING_TEST 7176
但是,在TestResource.rc中包含不同的头文件:
#include "DevControl.rh"
宏IDS_SHOWWARNING_TEST可能也在该文件中定义,具有不同的值。