我遇到过几次,不记得上次我做了什么来修复它(可能从头开始)。这是我所做的:
我复制了一个现有CMFCPropertySheet
对话框并粘贴为新对话框,然后将对话框 ID 编辑为 IDD_MINE,删除所有控件作为起始位置。接下来,我为此对话框添加了各种控件。
按照我想要的方式设置对话框后,我转到“添加类”并为对话框添加了一个类(选择基类CMFCPropertySheet
)。完成后,它是不正确的(VS2017 从来没有为我做正确的属性表)。参考我正在工作的另一个属性表,我将缺少的 IDD_MINE 添加到构造函数和 AFX_DESIGN_TIME { enum IDD=IDD_MINE }。
设置好课程后,我就可以开始添加变量了。但是我注意到一些作为复选框的控件应该是一个单选按钮,所以我删除了它们,创建了单选按钮(按赞),然后从控件 ID 的下拉列表中选择现有的 IDC_ 名称(旧的复选框名称)。接下来,我尝试将第一个单选按钮添加为值变量,但失败并出现以下错误:
你调用的对象是空的。
所以我转到对话框的类向导并查看“成员变量”选项卡。它列出了除单选按钮(和 -1 的 IDC_STATIC 项)之外的所有控件 ID。我尝试通过更改 IDC_ 名称来重命名单选按钮,但这并没有改变任何东西(退出程序等,仍然相同)。
那么有人知道我如何让可视化 stdio 资源编辑器/类向导与真正存在的控件同步,以便我可以使用向导添加它们吗?
蒂亚!!
编辑:
即使“成员变量”选项卡中存在的那些变量也不能与向导一起使用。未将相同对象引用设置为对象消息的实例。
所以绝望,我手动添加了该功能:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
现在一切正常!!
巫师会自己处理这一切。