我用VC2003写了一个ActiveX,然后在Delphi中调用,其中有一个事件,在VC中是这样定义的
void RegisterDone(VARIANT reg)
{
FireEvent(eventidRegisterDone, EVENT_PARAM(VTS_VARIANT), reg);
}
========
调用部份代码:
VARIANT vTmp;
::VariantInit(&vTmp);
vTmp.vt = VT_I4;
vTmp.lVal = 100;
RegisterDone(vTmp);
================
在Delphi中使用则是:
procedure TfrmMain.fvcsRegisterDone(Sender: TObject; reg: OleVariant);
begin
// 在这里哪怕我是一行代码不写也会出错,错误信息:
// Access violation at address 7C2E7C97 in module 'MFC71D.DLL'. Read of address CCCC0003
end;==============
这是怎么回事,请大家帮忙解决,谢谢!
void RegisterDone(VARIANT reg)
{
FireEvent(eventidRegisterDone, EVENT_PARAM(VTS_VARIANT), reg);
}
========
调用部份代码:
VARIANT vTmp;
::VariantInit(&vTmp);
vTmp.vt = VT_I4;
vTmp.lVal = 100;
RegisterDone(vTmp);
================
在Delphi中使用则是:
procedure TfrmMain.fvcsRegisterDone(Sender: TObject; reg: OleVariant);
begin
// 在这里哪怕我是一行代码不写也会出错,错误信息:
// Access violation at address 7C2E7C97 in module 'MFC71D.DLL'. Read of address CCCC0003
end;==============
这是怎么回事,请大家帮忙解决,谢谢!
解决方案 »
- 菜鸟提问:关于头文件和源文件关系的问题!
- 为什么我的头文件shlwapi.h中没有StrRetToStr,谁能帮帮我怎么样可以用StrRetToStr???重分感谢!!!
- 问个hook api的问题
- 有无人做过OFFICE文件在线编辑的ActiveX控件??
- =========================求类似 俄罗斯方块排布算法
- 制作一个最简单的DLL调用,关于C++调用或别的语言制作的程序调用VC做的DLL。小弟在这里先谢谢各位了
- 关于函数返回指针的问题
- 驱动程序中如何创建文件,如何向文件中读写数据???
- 怎样提高vc
- vc++中的ComboBox控件使用
- 哪位帮我看看 手写数字识别系统 的源码
- 在窗口类构造函数显示菜单后,file->exit菜单项咋是灰色的?
假如在ActiveX中定义一个方法如下,只有一个参数vaIn
LONG CFVControlCtrl::Hello1(VARIANT vaIn)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加调度处理程序代码 return vaIn.lVal;
}
然后,在另一个VC小程序中作如下调用
CComVariant v(99);
m_Result = m_fvcs.Hello1(v);
this->UpdateData(FALSE);
马上就出错了,跟踪后进入oledisp1.cpp(VC自带的文件中),在
// do standard method call
sc = pThis->CallMemberFunc(pEntry, wFlags,pvarResult, pDispParams, &uArgErr);
这一句时出错。
请高手指点。
然后调用时也用指针,就没有问题。
RegisterDone是干什么用的,在哪个头文件里?MSDN中找不到?