永发信息网

如何动态加载ActiveX控件

答案:2  悬赏:80  手机版
解决时间 2021-01-26 12:58
如何动态加载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);
全部回答

对于未注册(未引用)的控件:

在运行时添加未引用的控件 您也可以利用 add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 toolbox 中的控件)。为此,您必须也把控件的license 关键字添加到 licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:

option explicit

private sub form_load() licenses.add "prjweeks.weeksctl", "xydsfasfjewfe"   //添加引用,必须。 set extctl = form1.controls.add("prjweeks.weeksctl", "ctl1") extctl.visible = true ' the control is invisible by default. end sub

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
脑筋急转弯吃货和正常人的区别
七年级600字这一刻真漫长作文
有什么办法可以治困?睡觉就不用力告诉了
重庆木鱼音乐(合川店)怎么去啊,我要去那办事
吃了紧急避孕药之后一天多接受宫颈癌疫苗会有
采区回风巷、一翼回风巷、总回风巷的测风站应
成语时异事殊的意思是什么啊?有知道释义的请
2012年用文言文怎么说?
爱琴海艺术中心(高阳店)地址在什么地方,想过
膝下之欢什么意思
有关电脑病毒的电影
【球墨铸铁标准】球墨铸铁的技术标准比如国家
雅仕桶装水(文化路与三全路交叉口西南角张家
成语山砠水厓的意思是什么啊?有知道释义的请
我在天津汉沽我想买底声炮可是我出不去,怎么
推荐资讯
成语同心共胆的意思是什么啊?有知道释义的请
什么情况下需要注射狂犬疫苗?
五年级作文《读游西湖后感》
爱力斯嘉健身工作室地址在什么地方,想过去办
沈阳保成希尔顿逸林酒店健身中心怎么去啊,我
长时间行车要注意哪些问题?
根据《国务院关于在全国建立农村最低生活保障
【张灯结彩的意思】张灯结彩中张的意思
四季金银花树西安能种植吗
三峡大坝旅游全部都是坐在车上观光吗?、
云岫谷游猎风景区地址好找么,我有些事要过去
决定一个行业进入障碍大小的因素包括()等。A.
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?