原型:void __stdcall SetNotifyMsg( HWND hWnd, int nMsg);
功能: 设置本dll用于通知到调用界面的消息。
参数:hWnd,接收消息的窗口句柄;nMsg,用户自定义消息。
返回值:无。
注意:当有事件产生或状态改变时,dll将发送用户指定的nMsg消息到hWnd所标识的窗口,具体意义由消息的参数(WPARAM wParam 和 LPARAM lParam)指定。
参数值的意义见下表:
lParam参数的意义取决于wParam参数。
100 注册登录结果
101 注销
105 服务器忙
===========================
调用这个函数后怎么取得函数的信息,比如我要用一个label显示状态信息,应该怎么做

解决方案 »

  1.   

    使用Platform Invoke。
    参考平台调用教程
    http://msdn.microsoft.com/zh-cn/library/aa288468(v=vs.71).aspx
      

  2.   

    跨平台调用,用DllImport,只要参数正确就没问题
      

  3.   

    SetNotifyMsg( int hWnd, int nMsg);
      

  4.   

    你的程序应该是winform程序吧。
    把窗口的句柄传进去:myForm.Handle 然后你的窗口就应该可以收到库里面发过来的消息了。
    你可以override 窗口的WndProc,去处理消息。
      

  5.   

    [DllImport("你调用的++DLL名称.dll", EntryPoint = "VC_SetNotifyMsg(函数原型名)", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    SetNotifyMsg(IntPtr hWnd, int nMsg);
      

  6.   

      [DllImport("ZkrSipDLL.dll")]
      public static extern void SetNotifyMsg(IntPtr hWnd, int nMsg); private void Form1_Load(object sender, EventArgs e)
            {
                SetNotifyMsg(this.Handle,);第二参数nMsg应该是什么?
            }
      

  7.   

    nMsg,应该是用户自定义的消息ID
    到时候库里发消息过来就用这个ID这个ID应该比WM_USER大。因此可以使用WM_USER+100这样的定义WM_USER的定义:
    #define WM_USER   0x0400因此你可以定义
    const int WM_USER = 0x0400;
    const int WM_MYMESSAGE = WM_USER + 100;
      

  8.   

    nMsg,应该是用户自定义的消息ID