我能够修复我得到的错误,但我对错误背后的原因很感兴趣。
我在我的一个方法中使用了我的组合框(它是使用 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);
现在应用程序编译成功,当我启动我的应用程序时,对话框也正确显示。(注意:通常对话框会显示在桌面的中心,但这次显示在左上角)。
现在,当我拖动对话框或执行任何操作时,应用程序崩溃了。
当我更改整个声明并发送引用而不是指针时,我的应用程序正常工作。任何人都可以解释这种行为背后的原因吗?