现在的位置: 首页 > 综合 > 正文

ACTIVEX的一点心得

2013年09月16日 ⁄ 综合 ⁄ 共 1662字 ⁄ 字号 评论关闭

最近学习控件方面的知识,一些东西,记下!

 

1:Property:ActiveX Control的属性:

相当C+类的成员变量,该属性可以供控件自己用,也可以让外部调用!

       【类似于C+里面的public范畴,Property可以直接在控件属性列表里编辑,这样才能够体现出控件的优势,当然也可以通过函数方式去设置,但是没有直接在属性列表里编辑方便】

 

2:Method:ActiveX Control的方法:

相当C+类的成员函数,该方法可以供控件自己用,也可以让外部调用!

 

我们将控件的属性编辑后,希望直接可以再应用程序里运行,这样的话,需要稍微处理下!

在DoPropExchange(CPropExchange* pPX)里,添加数据交换,

  eg:PX_Short(pPX,"port",m_port,5660);

PX_String(pPX,"ipAdress",m_ipAdress,"127.0.0.1");

PX_Short(pPX,"m_testVariant",m_testVariant,123);

  其中,第2个参数和第3个参数,就是添加变量里面的外部名称和内部名称,第4个是默认参数。

 

然后,再在属性改变的函数  On..Changed里面,添加一句BoundPropertyChanged( DISPID dispid);

参数就是变量的ID号,在.h里面有的。

 

现在就写这么多,也只理解了这么多,还有属性页什么的,再看! 2011-04-01

参考http://blog.sina.com.cn/s/blog_72ad33b10100o79j.html

    http://www.microsoft.com/msj/0996/activex0996.aspx

 

3:属性页,顾名思义,就是用来修改控件外观的(一般都是这么做的,当然也可以用来实现设置参数),今天看了下,其实属性页蛮简单的,

    只是以前没有碰过,所以有点找不着北,哎,学电子出来的,果然没什么好脑子!

    1)添加一个对话框,属性设置为child 和 none ,大小最好和默认的一样,至少不要大过默认的那个属性页尺寸;

    2)添加类,基类是COlePropertyPage;

    3)修改一些东东,必须的:

        在UpdateRegistry里return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),

        m_clsid, IDS_PPG_ADD)

修改最后一个参数ID(手动在string Table里添加),还有构造函数里也要修改下 COlePropertyPage(IDD, IDS_PPG_ADD_Capition【这2个可以一样,也可以区分开来,建议一样!】;

        将属性页添加到COleControl,在cpp里引入头文件,然后在

BEGIN_PROPPAGEIDS(CVEDIOCtrl, 2)

PROPPAGEID(CVEDIOPropPage::guid)


PROPPAGEID(CAddPropertyPage::guid)


END_PROPPAGEIDS(CVEDIOCtrl)
 里,修改属性页的总的个数,同时添加引入的属性页

   4) 由于属性页继承自CDialog,所以可以在上面添加控件,然后在类向导里面,添加控件变量,注意,添加变量的时候,多了一个东东,

    叫做Optional Property Name ,就是指属性名字(class ...: public COleControl里的添加变量的外部名称),添加

好后,系统会自动做映射的!

DDP_Text(pDX, IDC_EDT_IP, m_IP, _T("ipAdress") );

DDX_Text(pDX, IDC_EDT_IP, m_IP);

 

   COleControl里的属性变量,必须要有,否则属性页里做关联无效的!

   属性页就是用来放一些变量,然后添加控件变量(关联变量要和COleControl的外部变量名称进行匹配)

 

抱歉!评论已关闭.