c++ - 如何更新 CMFCPropertyGridCtrl 的属性?

标签 c++ mfc

我正在开发一个通过 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/

相关文章:

c++ - 反转数据顺序

c++ - 防止竞争条件

c++ - 所有对内联函数的调用都必须重新编译?

c++ - boost::archive 和序列化的链接器错误

c++ - 在我的 vc++ 程序中查找我的嵌入式设备未连接到的 COM 端口的最佳方法

c++ - 需要调用两次 setter 以强制在 MFC 中刷新 GUI

c++ - 结构化绑定(bind)和基于范围的;在 gcc 中抑制未使用的警告

c++ - 模板定义中的条件

c++ - VC++调试: is it possible to skip cursor?

c++ - 如何在 CMainFrame 中处理鼠标点击