我有一个自己编写的控件,其中有几个属性,需要根据系统的属性来自我调整,也就是需要在属性类中执行一段代码来确定这个属性有几个可以设置的值,我使用InitDialog()这个消息来处理确定这个值,默认值我设置为NULL,这段处理能正常工作,这个控件我在VC的调试ActiveX Control Test工具中测试成功,但是在其他的程序中调用这个控件时,我在属性页中设置了这个值,但是一到运行程序后,这个值就变为NULL,不知道如何处理才能做到啊
    急,要分的直接说,只要能做到,在线等待...

解决方案 »

  1.   

    属性没有持久化,如果用ATL写的,请用PROP_DATA_ENTRY宏持久化就成了,或者你自己持久化到文件中
      

  2.   

    实现可持续性接口:
    IPersistStreamInitImpl,IPersistStorageImpl,IPersistPropertyBagImpl,ISpecifyPropertyPagesImpl
    添加属性映射,例如:
    BEGIN_PROP_MAP(CEditEx)
    PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
    PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
    PROP_ENTRY("Appearance", DISPID_APPEARANCE, CLSID_NULL)
    PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
    PROP_ENTRY("BorderStyle", DISPID_BORDERSTYLE, CLSID_NULL)
    PROP_ENTRY("BorderVisible", DISPID_BORDERVISIBLE, CLSID_NULL)
    PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_EditGeneralPg)
    PROP_ENTRY("Font", DISPID_FONT, CLSID_StockFontPage)
    PROP_ENTRY("ForeColor", DISPID_FORECOLOR, CLSID_StockColorPage)
    PROP_ENTRY("Text", DISPID_TEXT, CLSID_EditGeneralPg)
    END_PROP_MAP()
      

  3.   

    不好意思,我的IE出了点问题,直到现在才能上来,我没有使用ATL方式,如何在MFC模式下实现控件属性的持久啊??