日期:2014-05-18  浏览次数:20885 次

C#引用ActiveX控件问题
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控件问题

------解决方案--------------------
sf
------解决方案--------------------
http://www.cnblogs.com/kriss/archive/2005/02/16/104700.html
------解决方案--------------------
C# code
AcsOpenStream(ref int acsHandle, ref object* serverID, short u8AppID, int u32SendQSize, int u32RecvQSize, int s32DebugOn, ref int privateData);

------解决方案--------------------
MARK
------解决方案--------------------
地址就是整形值

如果变量是ref的,那么C++里面也要是ref的