有关ActiveX, Delphi, VC求救

floodzhu 2001-05-30 04:29:00


兄弟用Delphi编写了一个ActiveX控件,该控件中的有些属性是接口类型,在Delphi和VB下用的爽爽的,可是到VC中就死机拉奇了。举例如下:
-----------------------------------------------------------
AddRecord在TMyControl中定义,返回是IRecord类型,
在Delphi总的实现是TRecord = class(TAutoIntfObject, IRecord)
//////////////////////////////////////////
function TMyControl.AddRecord: IRecord
var
rec: TRecord;
begin
rec := TRecord.Create;
...
result = rec as IRecord;
end;
IRecord中有方法AddCell(AString: BSTR)
-----------------------------------------------------------
VB中调用:
with MyControl1.AddRecord
.AddCell "aaa"
.AddCell "bbb"
end with
-----------------------------------------------------------
Delphi中调用:
with MyControl1.AddRecord do
begin
AddCell('aaa');
AddCell('bbb');
end;
-----------------------------------------------------------
VC中调用:(VC包装生成CRecord类)
方法1:
CRecord rec = m_Grid.AddRecord;
rec.AddCell("aaa"); // -->弹出非法访问地址错(出错位置:COleDispatchDriver::InvokeHelperV中m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags, &dispparams, pvarResult, &excepInfo, &nArgErr);)
方法2:
CRecord * pRec = &m_Grid.AddRecord;
pRec->AddCell("aaa");
不出错,也不运行,追踪到源码COleDispatchDriver::InvokeHelperV中 m_lpDispatch == NULL 退出了
-----------------------------------------------------------

我现在搞不清到底是ActiveX控件有问题还是在VC中的调用方法不对?
...全文
103 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcmfc 2001-06-19
  • 打赏
  • 举报
回复
看不懂Delphi的Source!
floodzhu 2001-06-19
  • 打赏
  • 举报
回复
有没有办法删除这篇文章?
floodzhu 2001-06-01
  • 打赏
  • 举报
回复
高手寥寥,sigh..............

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧