在CXXXCTRL类中用DoPropExchange()方法,具体如下实现:
if (pPX->GetVersion() == (DWORD)MAKELONG(_wVerMinor, _wVerMajor))
{
     PX_Short(pPX, _T("Test"), (short &)m_test);
}
//....不知道各位有没有碰到这样奇怪的问题?

解决方案 »

  1.   

    在 DoPropExchange()里打个断点,调试之
    估计没有进if里的语句
      

  2.   

    把你相关代码贴出来 比如 idl中对test的声明  控件头文件中对test的声明
      

  3.   

    odl文件中的代码如下: 
    dispinterface _DXXX
    {
    properties:
      // NOTE - ClassWizard will maintain property information here.
      //    Use extreme caution when editing this section.
      //{{AFX_ODL_PROP(CConComocx2Ctrl)
          [id(1)] short Test;
      //}}AFX_ODL_PROP
    methods:
               //....略
      
    [id(DISPID_ABOUTBOX)] void AboutBox();
    };
    控制头文件中对Test的定义如下: 
        // Dispatch maps
    //{{AFX_DISPATCH(CConComocx2Ctrl)
    short m_test;
    afx_msg void OnTestChanged();
             //....略
    //}}AFX_DISPATCH
    DECLARE_DISPATCH_MAP()
      

  4.   

    问题已经搞定,是因为我的控件需要和页面元素交互,但我没有将控件实现为脚本安全,所以在远端服务器上的内嵌在网页上的控件是不会读取页面上的参数信息的.而本地只所以可以,是因为我每次运行本地页面的时候,都会弹出一个是否允许控件与页面交互的对话框,而我每次都点允许,所以本地页面上的参数信息可以传递给控件.
    具体实现脚本安全,可以参考MSDN上的文章,主要实现以下2个函数: 
    HRESULT RegisterCLSIDInCategory()
    HRESULT CreateComponentCategory()MSDN上的文章地址如下: 
    http://support.microsoft.com/kb/161873/