+ -
当前位置:首页 → 问答吧 → C#调用C++ OCX的方法

C#调用C++ OCX的方法

时间:2011-12-20

来源:互联网

小弟有一个C++的ocx文件,注册并添加到VS中后调用其中的某个方法。
如 public virtual bool SetUserData(ref short userDataBuffer, int userDataLen);
其中在C++中userDataBuffer的原型是wchar_t *类型,转换成ocx之后变成了ref short,我不知道如何进行调用,ocx文件无法修改,请问各位大牛怎么解决啊?急等啊。

作者: lzblqq300   发布时间: 2011-12-20

有没有这个COM的C++使用例子,贴出来看看。。。

作者: sdl2005lyx   发布时间: 2011-12-20

引用 1 楼 sdl2005lyx 的回复:

有没有这个COM的C++使用例子,贴出来看看。。。


COM是封装好的,看不到内部代码。
我是这样用的
这是设置
string data = "这是用户数据";
  char[] strs = data.ToCharArray();
  short x = (short)strs[0];
  if (ocx.SetUserData(ref x, strs.Length))
  {

  }


这个是读取的方法
  string data = "";
  char[] strs = new char[100];
   
  short x = (short)strs[0];
  int count = ocx.GetUserData(ref x, strs.Length);
  if (count>=0)
  {
  for(int i=0;i<count ;i++)
  {

  data += (char)x;
  x = (short)(x + sizeof (short));
  }
  }
其中count能够读出来是6,但data除了第一个字符外,其余都是乱码

作者: lzblqq300   发布时间: 2011-12-20

把ref short userDataBuffer改为string试试看,

作者: stonespace   发布时间: 2011-12-20

引用 3 楼 stonespace 的回复:

把ref short userDataBuffer改为string试试看,


呵呵,我也想改啊,可是OCX是别人写的,代码改不了,ref short userDataBuffer是visual studio自动生成的,也改不了啊

作者: lzblqq300   发布时间: 2011-12-20

相关阅读 更多