fengyue

如何动态加载ActiveX控件

我们的开发平台需要用第三方控件(ActiveX)时,一般采用的方法是,先在VC中的插入控件,VC会自动生成操作控件的类,然后创建一个控件,并处理对应的事件。如果控件接口变化,更新控件,需要重复操作且编译才能发布,比较麻烦。显然,动态加载ActiveX控件能解决这个问题。如果做过页面编程就会知道,页面脚本里边可以动态创建控件的。我们的开发平台是否也能动态创建控件呢,答案是肯定的。下面介绍一下如何动态加载ActiveX控件:
1.首先是获取到控件的GUID,可以通过配置。
2.获取控件的方法、事件等属性,方便后面的事件处理
3.采用CWnd::CreateControl创建控件实例,如果是通过脚本调用控件接口,可以将该控件添加到脚本引擎。
   CreateControl原型如下:

   BOOL CreateControl( REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
   
const POINT* ppt, const SIZE* psize, CWnd* pParentWnd, UINT nID,
   CFile
* pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL );

4.处理控件触发的事件
   重载父窗体的OnCmdMsg函数,处理对应的事件即可,OnCmdMsg原型如下:

    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
  AFX_CMDHANDLERINFO
* pHandlerInfo);

 

posted on 2011-11-30 08:51 风悦 阅读(3743) 评论(1)  编辑 收藏 引用 所属分类: C/C++

Feedback

# re: 如何动态加载ActiveX控件 2011-11-30 10:15 暖宝宝指南

刚好用到,谢谢分享!  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理