我在创建基于 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。我现在正在对此进行更多测试。