什么可能导致 LoadFrame 返回 false

Posted

技术标签:

【中文标题】什么可能导致 LoadFrame 返回 false【英文标题】:What could cause LoadFrame to return false 【发布时间】:2018-01-19 18:42:18 【问题描述】:

有一个当前的答案,这可能是我的问题 - 就像之前的提问者一样,我现在只升级 20 年前的遗留代码。 2014 年,Ryan McCloskey 写了Window creation failed - LoadFrame(IDR_MAINFRAME) Fails C++ 我不确定我是否有同样的问题。在其他站点上还有其他类似问题的示例,在升级遗留代码时总是会出现,但每个人的解决方案都不同。 我无法进入 LoadFrame 代码,因为我收到错误 xxxxx.dll'。无法找到或打开 30 个 dll 的 PDB 文件。当我使用一个全新的项目时,我没有收到此错误。 我“从现有文件”创建了这个项目,我想知道是我没有选择我需要的选项还是选择了我不应该选择的选项。

如果我的问题和 McCloskeys 先生一样,我需要知道:什么是错误的库,什么应该是正确的库。我使用的是 Visual Studio 2017,而不是他使用的 2010。一旦我确定要使用哪个库(假设这仍然是同一个问题,它确实看起来像),我如何在 V.S. 中设置正确的库。 2017.

代码在我的签名下方。

谢谢。

琳达

HWND  app_hwnd       = NULL;    
DWORD val_type       = REG_SZ;
char  path[MAX_PATH] = NULL;
DWORD buff_size      = MAX_PATH;
CMultiDocTemplate *pDocTemplate;
    /* find running application, if any */
app_hwnd = FindWindow(NULL, CStrings::ServerAppTitle);


if(app_hwnd != NULL)

    /* application already running, generate warning and exit */
    ::MessageBox(NULL, CStrings::EMRunning, CStrings::Warning,
                    MB_OK | MB_ICONWARNING | MB_SYSTEMMODAL);
    exit(1);



#ifdef _DEBUG
    afxMemDF |= checkAlwaysMemDF;   // Check for memory overwrite.
#endif
AfxEnableControlContainer();    

UINT nIDResource = IDR_EMNTTYPE;

// we need to hold RDC template to force RDC creation at startup
pDocTemplate = new CMultiDocTemplate(
        nIDResource,
        RUNTIME_CLASS(CCMetRDoc),
        RUNTIME_CLASS(CCMRChFrm),
        RUNTIME_CLASS(CCMRView));
AddDocTemplate(pDocTemplate);


// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame(this);

EM_ASSERT(pMainFrame);


if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) 

【问题讨论】:

请描述您自己的问题并显示相关代码。添加指向其他问题/答案的链接。 您的标题提供的信息比文本的其余部分更多。只需查看调试输出。在调试器中运行程序并单步执行 LoadFrame。你有源代码!它没有那么复杂。你会看到问题。可能缺少一个简单的资源。 致所有,感谢您的反馈。下面是代码。我无法进入 LoadFrame,因为我 【参考方案1】:

对所有人来说, 我通过将我的代码与 Visual Studio 2017 创建的标准项目合并来解决我的问题。问题似乎出在新的所需标准初始化中。因为,最终,我将摆脱用户界面,但现在需要一个最小的,我只使用生成的 MainFrm 和 ChildFrm 类, 当我在新项目目录中构建它时,我遇到了许多与 wchar 相关的错误——我假设是 64 位和 32 位的问题。我通过将合并的文件复制到新目录并从现有文件创建项目来解决此问题,因为结果符合我客户的需求。

琳达

【讨论】:

以上是关于什么可能导致 LoadFrame 返回 false的主要内容,如果未能解决你的问题,请参考以下文章

尝试访问本地文件时,啥会导致 curl 返回 false?

MFC - “hello world”中的 CFrameWnd::LoadFrame() 问题

gatt.writeCharacteristic() 可能返回 false 的原因是啥?

什么可能导致 MySQL 间歇性地无法返回一行?

为啥 count(false) 返回 1?

当 debug=False 时可能导致 Django 错误,而当 debug=True 时不存在