我能够修复我收到的错误,但我对错误背后的原因感兴趣。
我在我的一个方法中使用了我的组合框(使用DDX机制创建)指针作为参数。
例如:
bool CMyStuff::FillCombo(CComboBox* combo_ctrl)
但是我的组合框是通过拖放生成的,默认情况下MFC创建了一个对象而不是指针。因为我需要一个指向发送的指针,所以我将该成员变量更改为指针。
但是在此之后我得到了编译错误,因为DDX没有将指针作为输入。所以改变了我的DDX代码:
DDX_Control(pDX, IDC_COMBO1, m_ptr_combo1);
到
DDX_Control(pDX, IDC_COMBO1, *m_ptr_combo1);
现在应用程序已成功编译,当我启动应用程序时,对话框也已正确显示。 (注意:通常对话框将显示在桌面的中央,但这次显示在左上角)。
现在,当我拖动对话框或执行任何操作时,应用程序将崩溃。
当我更改整个声明并发送引用而不是指针时,我的应用程序正常工作。任何人都可以解释这种行为背后的原因吗?