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