在 C# 工作多年后,我又回到了我编写的旧 MFC 应用程序。但看起来我需要复习一些事情。
我向现有对话框添加了一个复选框控件。然后,我使用类向导添加了一个类型为 bool
的非控制变量。变量是按预期创建的。
但是,我没有看到任何条目添加到DoDataExchange()
方法中。当我尝试手动添加它时:
DDX_Check(pDX, IDC_PRINT_SUMMARY, m_bPrintSummary);
我收到智能感知错误:
类型为"int &"(非 const 限定)的引用不能使用类型为 "bool" 的值进行初始化
1. 为什么在添加变量时没有为我创建DoDataExchange()
条目?
2. 如果DDX_Check()
期望和int &
,为什么类向导默认键入bool
作为复选框值?
复选框可以是三个值之一,因此需要 int。
BST_CHECKED
- 按钮处于选中状态。
BST_INDETERMINATE
- 按钮灰显,表示不确定状态(仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时才适用)。
BST_UNCHECKED
- 按钮已清除
至于为什么它不能自动编辑DoDataExchange,这可能是您类的C++格式问题。