金鸿狂舞 2015-07-16 06:43 采纳率: 0%
浏览 2705

Delphi 调用C++ dll 回调函数

用Delphi 调用容联云通信的动态库CCPAppClient.DLL,其中有一个函数
Function CCPinit( CallbackInterface: CCPCALLBACKINTERFACE ):Integer;stdcall;
参数CCPCALLBACKINTERFACE 是一个结构体指针,包含 onConnected , onConnectError 等回调函数。
在调用函数CCPinit调用成功后(返回值0),会触发CCPCALLBACKINTERFACE
结构体中的回调函数onConnected
这部分代码用Delphi如何写?麻烦高手给看一下
下面是C#的demo

CCPCall.instance.loginInterface = this;
 string ret = CCPCall.instance.LoginCCP();
 if (ret != null)
 {   MessageBox.Show(ret, "登录失败", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
 }
 else
 {
     login_btn.Enabled = false;
     login_btn.BackgroundImage = Resources.bluebutton_disable;
     login_btn.ForeColor = Color.White;
     login_btn.Text = "登录中...请稍后";
   }

          public delegate void LoginDelegate();

    #region ILoginInterface 成员

    public void onConnected()
    {
        LoginDelegate connected = delegate()
        {
            IMDBAccess.CreateIMMessageTable();
            IMDBAccess.CreateGroupNoticeTabel();
            this.Hide();
            new MainForm().Show();
        };
        this.BeginInvoke(connected);
    }

    public void onConnectError(CloopenReason reason)
    {
        LoginDelegate error = delegate()
        {
            login_btn.Enabled = true;
            login_btn.BackgroundImage = Resources.bluebutton_normal;
            login_btn.Text = "登录";
        };
        login_btn.BeginInvoke(error);
    }

    #endregion


  • 写回答

1条回答 默认 最新

  • 不得闲 2015-07-17 00:54
    关注

    首先是要给你的CallbackInterface这个声明一个对应的结构体,然后调用的时候,将这个里面该要赋值的都赋值,然后再调用,就行了。哦

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试