Mfc ActiveX属性持久性

Mfc ActiveX属性持久性,mfc,activex,Mfc,Activex,我有一个关于我正在开发的ActiveX控件的问题。我已经解决了大部分的问题,但我却被困在了一个真正的路障上。这个ActiveX正在被导入到其他软件中,所以我必须有一个很好的属性页实现。我已经设法获得一些持久性属性来处理一个问题。当我在属性页中进行更改时,只要使用该属性页的开发应用程序处于打开状态,该属性页就会更新并保持不变,但当我重新加载该应用程序时,该属性页会恢复。我已经把范围缩小到开发应用程序没有意识到ActiveX已经改变,因此没有保存。如果我做了一个不相关的更改并保存了程序,那么一切都很

我有一个关于我正在开发的ActiveX控件的问题。我已经解决了大部分的问题,但我却被困在了一个真正的路障上。这个ActiveX正在被导入到其他软件中,所以我必须有一个很好的属性页实现。我已经设法获得一些持久性属性来处理一个问题。当我在属性页中进行更改时,只要使用该属性页的开发应用程序处于打开状态,该属性页就会更新并保持不变,但当我重新加载该应用程序时,该属性页会恢复。我已经把范围缩小到开发应用程序没有意识到ActiveX已经改变,因此没有保存。如果我做了一个不相关的更改并保存了程序,那么一切都很好,并且这些值会像预期的那样保持不变。我已经尝试了所有方法,但似乎无法让导入ActiveX的应用程序在通过属性页进行更改时实现。我想知道是否有人能解决这类问题。在我看来,如果我可以强制DoPropExchange()它会工作,但我不知道如何显式地调用它

提前谢谢 马特

谢谢你的意见。我确实有SetModifiedFlag(),但它不起作用。在戳了它之后,我解决了那个问题,但现在我重新定向我的问题。为了防止加载activex的应用程序在其“连接列表”(特定于第三方应用程序)中显示该属性,我已从idl files dispinterface中删除了上述属性。应用程序似乎将所有界面加载到此列表中,但这并不好,因为某些属性应该是持久的,只能通过proppages进行修改。我尝试了所有标记,如hidden和local,但仍显示在列表中。当我从dispinterface中删除它时,这是我想要的,但不会向IsModi发出信号我的新问题是,有没有另一种方法来定义这样一个实例的属性,或者是否可能有一个辅助接口(我没有测试应用程序是否会看到这个接口,因为我不确定如何定义这个接口)或者只在proppage和控件之间有一个属性。或者是否有其他方法来表示脏。控件的OnMemberVariable正在正确执行我从测试中知道,如果属性不在dispinterface中,SetModifiedFlag()似乎没有任何作用


再次感谢

您需要将控件标记为“已修改”,以便其主机可以检测到它并重新保存持久属性。在这种情况下,由控件实现的
IPersistXxx::IsDirty
将指示脏状态

基于MFC的控制为此目的:

每当发生会影响控件的持久状态的更改时调用此函数。例如,如果持久属性的值更改,请使用bModified TRUE调用此函数

更新:若要在属性浏览器中隐藏属性,可以使用“属性”

使用[nonbrowsable]属性标记不应显示在属性浏览器中的接口或dispinterface成员