當我的程序嘗試爲用戶生成AFX_IDP_PARSE_REAL錯誤時,它無法加載存儲在afxres.rc文件中的字符串。我發現已經有this question,但是它已經解決了,因爲對afxres.rc的引用被意外從program.rc文件中刪除了。對我來說並非如此。我的program.rc文件包含答案中列出的確切代碼,以包含afxres.rc文件。嘗試從afxres.rc加載字符串時MFC LoadString失敗
在調試模式下,它在下面的ASSERT中斷。
int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType, UINT nIDHelp)
{
CString string;
if (!string.LoadString(nIDPrompt))
{
TRACE(traceAppMsg, 0, "Error: failed to load message box prompt string 0x%04x.\n", nIDPrompt);
ASSERT(FALSE);
}
if (nIDHelp == (UINT)-1)
nIDHelp = nIDPrompt;
return AfxMessageBox(string, nType, nIDHelp);
}
當我實際運行通過.exe文件的應用,它只是產生一個空的警告框,因爲沒有加載AFX_IDP_PARSE_REAL串;這適用於afxres.rc中的任何字符串。
什麼可能導致應用程序無法從afxres.rc載入字符串?
你有沒有走進加載鏈()檢查它試圖從正確的資源文件中加載字符串?你可能正在改變活動的資源句柄? – rrirower
您是否嘗試過在VS中打開EXE的二進制資源,並查看AFX字符串資源是否確實嵌入正確? – user1793036
@rrirower我多次進入LoadString調用。我已經研究過,但仍不確定如何確定正在訪問哪個資源文件。從一開始我一直擔心afxres.rc沒有被關注。我沒有確認如果我將AFX_IDP_PARSE_REAL定義複製到我的程序資源文件的字符串表中,LoadString()調用沒有問題。但我不確定這是否意味着它是唯一的資源文件被檢查或者它是否是其中的一個。 – Gregg1127