regsvr32 加.ocx的目录所在及文件
如:regsvr32 c:\DJAcsAPI.ocx控件下载在 :http://download.csdn.net/user/lhsxsh  
---------(ActiveX控件在NET中的使用)
C语言的结构定义代码   
typedef struct 

DJ_S8 m_s8ServerIp[32]; /*XMS server ip*/ 
DJ_U32 m_u32ServerPort; /*XMS server port*/ 
DJ_S8 m_s8UserName[32]; /**/ 
DJ_S8 m_s8UserPwd[32]; /**/ 
}ServerID_t;/**/ 
/**/ 
ServerID_t cfg_ServerID; /*C代码调用acsOpenStream 建立与ACS服务器的连接*/ 
r = XMS_acsOpenStream ( &g_acsHandle, &cfg_ServerID, g_u8UnitID, 32, 32, cfg_s32DebugOn, NULL); 
-----------------
/*提供商把C的代码封装成ActiveX控件 ,在vc2005 NETc# 引用时如下 */ 
AcsOpenStream(ref int acsHandle, ref int serverID, short u8AppID, int u32SendQSize, int u32RecvQSize, int s32DebugOn, ref int privateData); 
现在有一个地方不明白的就是 :
C的代码第二个参数是一个结构体。取地址运算符(&) ,但在NET中怎么会变成 INT类型?
在NET中我们如何做到把结构体变成一个 ref int 类型来用。
ActiveX控件定义的事件,我们NET又如何引用?   多谢请教。
(开发的文档serverID 是ServerID_t的结构类型。我NET代码中我们应该怎么处理?)C#引用ActiveX控件问题

解决方案 »

  1.   

    http://www.cnblogs.com/kriss/archive/2005/02/16/104700.html
      

  2.   

    ocx 与DLL调用是一样的嘛? 也是用 DllImport?
    应该不一样吧,在DELPHI中两都的操作是不一样的。调用DLL时也要先声明下函数明,而调用OCX就不用了。
    那个专家有C#下有用户OCX的人来帮我解答。问题解决了我把所有的分都给他。不够我再加。
      

  3.   

    AcsOpenStream(ref int acsHandle, ref object* serverID, short u8AppID, int u32SendQSize, int u32RecvQSize, int s32DebugOn, ref int privateData);  
      

  4.   

    MARK
      

  5.   

    地址就是整形值如果变量是ref的,那么C++里面也要是ref的
      

  6.   

    在DELPHI 里头的处理是 转化为空指针类型,再转化为INT 
      

  7.   

    C的代码调用上面写了很清楚了,你们认真看下。
    如果今天还不能解决这个问题,我只好用DELPHI来写了。但我真的很想用C#来写个程序。希望大家能支持。
    delphi 的调用代码是 :integer((pinteger(@cfg_ServerID))^)  
    pinteger是C的空指针的意思  要解除指针引用(即取出指针所指区域的值),C 的语法是 (*ptr),Object Pascal则是 ptr^。 
    取某对象的地址并将其赋值给指针变量,C 的语法是 
    ptr = &Object; 
    Object Pascal 则是 
    ptr := @Object; 
    也只是符号的差别而已。
    希望大家能支持,分不够再加。    如果今天还不能解决我只放弃c# 用 D来写了