我正在开发一个通过 MFC 将数据模型和用户界面绑定(bind)在一起的应用程序,我正在尝试使用 CMFCPropertyGridCtrl 来显示和编辑从数据模型中提取的数据。然后在我完成编辑属性之后显示在 CMFCPropertyGridCtrl 上,我需要将新更新的数据移回数据模型。执行此操作时,我需要在执行数据传输之前检查 CMFCPropertyGridCtrl 中的数据是否真的已更新。我通过检查 IsModified 方法的返回值来实现它。但是在我将数据移回数据模型后,CMFCPropertyGridCtrl 不会自行更新其属性。所以 IsModified 方法永远不会起作用,因为它只是将当前值与初始值进行比较,而不是更新后的值。我该如何解决这个问题?
最佳答案
CMFCPropertyGridCtrl::OnPropertyChanged 旨在跟踪属性的更改并将更改反射(reflect)到您的系统。此虚函数由 CMFCPropertyGridProperty::OnUpdateValue 调用。
因为 m_bModified 在这里讨论到这里关于它的一些话,因为它有时会引起混淆: m_bModified 由函数 CMFCPropertyGridProperty::ResetOriginalValue 清除!在这种情况下,m_varValueOrig 被设置回属性。原始值可能会被 SetOriginalValue 改变。
因此,检查和跟踪更改的唯一好位置是 CMFCPropertyGridCtrl::OnPropertyChanged。如果更改了属性,则 IsModified 为 true。但这只是与原始值相比...
关于c++ - 如何更新 CMFCPropertyGridCtrl 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667548/