描述:
控件中增加一个属性,重新编译后。 旧执行程序还可以使用新编译的控件。哪位高手请给指点一二。谢谢!
解决方案1:
IObj1
{
property get_Name
}
IObj2 : public IObj1
{
property get_NameLen
}
class CObj : public IObj2
{
INTERFACE( IObj1)
INTERFACE( IObj2)
}
如是而已
如果是增加属性(不是更改),则旧版本的程序肯定可以正常运行,但是不能操作新增加的属性,并且,新增加的属性不能出现在原有的方法中,否则会影响旧版本程序的运行
解决方案3:我觉得楼上说的不对,这是增加控件的属性 又不是增加属性页属性,你可以用带不同参数的那种重载
解决方案4: MFC设计的ocx控件吗?
可以参考<<MFC框架升级OCX时存在的向下兼容性问题>>一文
http://csdn.aehk.com/?id=55825
要重新注册控件吧
解决方案6:LZ的属性可能不是指属性页
解决方案7: 覆盖ISpecifyPropertyPagesImpl::GetPages()来增加你的新属性页,或删除它们,改变它们等到。以下代码演示在已存在的属性表中加入新的属性页:
HRESULT STDMETHODCALLTYPE GetPages(CAUUID *pPages)
{
if(SUCCEEDED(ISpecifyPropertyPages_GetPages(pPages,NULL))
{
pPages->cElems += 1;
pPages->pElems =
(GUID *)::CoTaskMemAlloc(pPages->cElems * sizeof(CLSID));
pPages->pElems[pPages->cElems - 1] = CLSID_General;
}
else
return E_FAIL;
}