我做了一个activex控件,用户要求必须使用activex工程中自带的属性页完成属性的设置。msdn中提供的方法是是先在控件中先设定一个属性。然后再在属性页中将一个控件与这个属性绑定。例如:
void CCircPropPage::DoDataExchange(CDataExchange* pDX)
{
    //{{AFX_DATA_MAP(CCircPropPage)
    DDP_Text(pDX, IDC_EDIT1, m_caption, _T("Caption"));
    DDX_Text(pDX, IDC_EDIT1, m_caption);
    DDP_PostProcessing(pDX);
}
这样当用户改变属性页中的IDC_EDIT1中的值,就可以改变控件中"Caption"属性的值。这个我也已经做到了。但如果我要将IDC_EDIT1经过加工或从另外一个地方得到,再给"Caption"属性,好像就做不到了,即使改变变量m_caption值也不行,实在没有办法了,希望各位大侠指点,各位大侠能否指点一下如何在属性页和控件间随意传送数据,谢谢

解决方案 »

  1.   

    那你有没有得到IDC_EDIT1值后,对控件进行update呀?否则,虽然你的IDC_EDIT1值改变了,但是却没有在窗口里SHOW出来而已。
      

  2.   

    我update了,是不行的。我发现
    DDP_Text(pDX, IDC_EDIT1, m_caption, _T("Caption"));
    DDX_Text(pDX, IDC_EDIT1, m_caption);
    这两条语句的顺序不能变,按现在的顺序,IDC_EDIT1中的内容变化能反映到控件中。如果把第二条放在前面,updatedate(false)是可以在对话框中反映出内容的变化,但内容的就不能反映到控件中。
      

  3.   

    是否可以把控件绑定的变量定义成Contral类型,每次需要用到Caption属性的时候从该变量中取GetWindowText呢?
      

  4.   

    DDX_Text(pDX, IDC_EDIT1, m_caption);就行了,
    把 DDP_Text(pDX, IDC_EDIT1, m_caption, _T("Caption")); 删掉
      

  5.   

    自己如何写DDP_Text,我只想能够将属性页中的信息按照自己的格式传送到控件中的特定属性。