日期:2014-05-20  浏览次数:20845 次

在线等!! 我在c#中引用了一个OCX控件,该控件的方法中 指针参数,我应改如何传递???
从短信猫中获取短信的方法:
axSmscontrol1.ReadMsg(ref   object,   ref   object,   ref   object,   ref   object)


我定义了四个object类型的变量:
object   oCENTERSMS;
object   oMOBILID;
object   oCONTEXT;
object   oTime;
axSmscontrol1.ReadMsg(ref   oCENTERSMS,   ref   oMOBILID,   ref   oCONTEXT,   ref   oTime)

但是总是接受不到数据???


注:axSmscontrol1控件的其他方法动能使用,只有这个   要求指针参数的方法不行.

如何解决???

------解决方案--------------------
short ReadMsg(VARIANT FAR* pvariantSMCA, VARIANT FAR* pvariantOA, VARIANT FAR* pvariantMSG, VARIANT FAR* pvariantTimeStamp)

在VC++中为VARIANT 指针,类型为VT_BSTR,返回结果存在bstrVal中。

第一个参数:对方短信中心号码;

第二个参数:对方号码;

第三个参数:短信内容;

第四个参数:时间邮戳:(年年月月日日时时分分秒秒XX)格式的字符串。XX表示时区,一般情况下可以不管。

返回值:小于0表示失败或没有新短信可读,等于0的数n表示读到了短信。

------解决方案--------------------
#region 收取上行短信
private void axSmscontrol1_OnRecvMsg(object sender, EventArgs e)
{
t_sms_inTableAdapter indata = new t_sms_inTableAdapter();
string s = "";
string number = "";
string content = "";
string time = "";
int response = this.axSmscontrol1.ReadMsgForVB(ref s, ref number, ref content, ref time);
if (response > -1)
{
indata.Insert(number, content, DateTime.Now);
logger.Info(string.Format("收到上行短信!!!!!"));
}
AlertCustom f = new AlertCustom();
System.Drawing.Rectangle r = Screen.GetWorkingArea(this);
f.Location = new System.Drawing.Point(r.Right - f.Width, r.Bottom - f.Height);
f.AutoClose = true;
f.AutoCloseTimeOut = 15;
f.labelX1.Text = string.Format("收到来自:{0}的短信。\r\n内容为:{1}",number,util.sqrit(content, 19));
f.ShowDialog();

#endregion