c++ - MFC CDialog::创建失败

标签 c++ mfc cdialog

我在创建基于 CDialog 的窗口的某些代码时遇到问题。该代码上周运行良好。我所做的唯一更改是用散列数组替换 C++ 双端队列。我已经注释掉了调用 Create 方法的代码行,以允许我跳过加载窗口。现在代码不再创建窗口。

Create 函数返回 false,GetLastError 函数返回 0。我没有在窗口内使用任何自定义控件 - 只是一个复选框和一个列表控件。据我所知(此时我无法连接调试器)根本没有调用 OnCreate 和 OnInitDialog 函数。

我在下面粘贴了我用来测试 Create 函数的返回和 GetLastError 的代码

BOOL result = ORDER_HANDLER_GUI.Create(OrderHandlerGUI::IDD, AfxGetMainWnd());
int error = ::GetLastError();

if(result)
    AfxMessageBox("Created GUI");
else
{
    CString msg;
    msg.Format("%d", error);
    AfxMessageBox("Could not create GUI");
    AfxMessageBox(msg);
}

更新: 我终于设法让调试器附加(这是一个加载在第 3 方应用程序中的插件,由于某种原因不喜欢调试器)。单步执行代码后,AfxGetMainWnd() 似乎返回 NULL。我现在正在对此进行更多测试。

最佳答案

问题似乎出在对 CDynLinkLibrary() 的调用上。

我应编写加载我的插件的软件的公司的要求将其注释掉。重新添加此行导致某些值仍然为空,但窗口现在已正确创建。

我将对此进行一些研究,如果有任何发现,我会进行更新。如果有人比我更了解这一点(不难做到),请随时发表评论。

关于c++ - MFC CDialog::创建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835419/

相关文章:

c++ - QTableWidget - 将多行文本放在一行中

c++ - 位图算法

c++ - 使用 cin.get() 似乎无法读取我期望的字符。怎么了?

c++ - MFC-CArray 复制

c++ - 为什么在editBox中使用SetSel和clear函数来写入文本

c++ - 如何将 CS_DROPSHADOW 应用于 CDialog 的子类

c++ - 如何使用 select 将数据从服务器发送到客户端

c++ - MFC 如何将 CStatic 调整为小尺寸

windows - 适用于 Windows 的命令行对话框工具

visual-studio-2010 - VC10 中的 CDialog 内存泄漏