1

我在创建基于 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);
}

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

4

2 回答 2

1

问题似乎与对 CDynLinkLibrary() 的调用有关。

应编写加载我的插件的软件的公司的要求,我对此进行了评论。重新添加这一行会导致一些值仍然为空,但现在可以正确创建窗口。

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

于 2009-05-07T20:59:57.100 回答
0

该对话框是否使用任何可能导致问题的控件?例如 Richedit?

于 2009-05-07T16:51:25.340 回答