大家,我现在在用delphi 调用C++的含有窗体资源的dll,具体细节是这样一来的。C++ dll是厂家提供的,功能是串口收发和非模式对话框显示数据。借口函数有两个,一个是getvalue(),一个是readyToShow(hwnd)。readyToShow(hwnd)是获取窗口句柄启动对话框的。我在delphi下调用该dll,我把this.handle传递给readyToShow(hwnd),结果出错,“afxwin.inl assertion”,不知道是什么原因,烦帮忙解决以下。

解决方案 »

  1.   

    补充,使用C++编写的测试例程通过了,就是delphi下还没成功
      

  2.   

    C++ dll导出函数
     bool spy(hwnd h); int getvalue();delphi下就简单用了一个form,将当前的句柄传递
      spy(self.handle);
    在VC中用spy(AfxGetMainWnd ()->m_hWnd);没有出现问题。但是用delphi就出错了。我在delphi跟踪调试,发现进入了dll,不知道是不是这个句柄导致的问题。
      

  3.   


    C++ dll导出函数
     bool spy(hwnd h);
     int getvalue();delphi下就简单用了一个form,将当前的句柄传递
      spy(self.handle);
    在VC中用spy(AfxGetMainWnd ()->m_hWnd);没有出现问题。但是delphi就出错了。我在delphi跟踪调试,发现进入了dll,不知道是不是这个句柄导致的问题。
      

  4.   

    这个hwnd的作用是什么?
    调试看handle值是否有问题。
    另外可以用VC试一下,不使用MFC,传递一个用API创建的窗口是否正常。
      

  5.   

    解决了,在接口函数中没有引用参数,在dll Func中采取了获取当前窗口父句柄的方式