关于控件的注销/反注册程序

    有客户反映控件注销后,注册表仍残留了许多与控件相关的键值。查看了一下,果然有此情况,而原因则是由于控件的编码不完全所造成,也可以说是编码疏漏。虽说不影响使用,但懂点技术的客户会说:啊,你们的软件不是绿色的。
    举个例子:
   CtrlXXX 控件,对于注销, 一般我们的做法是,采用向导搞定控件的注销,从来不去修改它。
   当我们为其添加新接口时, 如:CtrlXXX.ISheet ,注销处的代码没有改变,我们也没去动它,但实际上这个控件已经新添了一个组件:ProgID是 CtrlXXX.ISheet 。注册时,改ProgID以及对应的ClsID会在注册表中注册,如果注销时不处理,那就会永久存在了,也就是客户所说的相关键值了。

   处理方法很简单:
   需要在注销代码(DllUnregisterServer)处添加代码:
   const CLSID CLSID_CtrlXXX_Sheet = {0x8c396584, 0xd888, 0x11d3, 0x93, 0x67, 0x0, 0x40, 
         0x33, 0x32, 0xe7, 0x2f };
   AfxOleUnregisterClass(CLSID_CtrlXXX_Sheet, _T("CtrlXXX.ISheet"));
 

附:
    就使用来说:其实呢,不去理它的话,也没啥影响,因为毕竟很少有直接不通过主控件而直接调用其中的其它组件接口的。但如果直接用了,而控件又已经注销了。注册表中能找到组件文件位置,在装载时找不到指定文件,那么,程序产生的提示可能就不准确了,会给用户造成误解。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值