我做了一个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值也不行,实在没有办法了,希望各位大侠指点,各位大侠能否指点一下如何在属性页和控件间随意传送数据,谢谢
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值也不行,实在没有办法了,希望各位大侠指点,各位大侠能否指点一下如何在属性页和控件间随意传送数据,谢谢
DDP_Text(pDX, IDC_EDIT1, m_caption, _T("Caption"));
DDX_Text(pDX, IDC_EDIT1, m_caption);
这两条语句的顺序不能变,按现在的顺序,IDC_EDIT1中的内容变化能反映到控件中。如果把第二条放在前面,updatedate(false)是可以在对话框中反映出内容的变化,但内容的就不能反映到控件中。
把 DDP_Text(pDX, IDC_EDIT1, m_caption, _T("Caption")); 删掉