因为工作需要用DELPHI做了一个OCX,必须要由VC来调用.在这个OCX中使用了跨线程触发事件,后来我才知道MFC并不支持这么做.在这个OCX(ActiveXForm)里的基本流程是这样的:
1.首先有一个初始化的方法(这个方法在调用OCX时必须先调用),创建了一个TCP监听端口,自定义了一个接收数据事件指定给这个监听端口.
2.在数据接收事件中,每当接收到数据后,就创建另一个数据处理子线程,
3.在数据处理子线程中分析数据,如果数据符合条件就调用ActiveXForm的一个方法来触发指定的A事件.(这里的调用方式是在申明了一个全局的OCX对象.)这整个流程在DELPHI环境下调用OCX,A事件是能够在接收到数据后正常触发的.但是在VC里则不行.我想知道应该如何修改,才能在VC里也能够触发这个事件呢?
(参考了一些CSDN上的相关贴子,我试过在第三步时在子线程里PostMessage给OCX窗体,窗体的句柄由FindWindow来指定,但是定义在OCX窗体里的消息处理函数并没有收到任何消息.)

解决方案 »

  1.   

    http://www.mvps.org/vcfaq/com/1.htm
    http://www.mvps.org/vcfaq/com/11.htm
      

  2.   

    to jiangsheng(蒋晟.Net[MVP]) :
    你好,再三得到你的指点,非常感激。我试过那个比较简单的方式:即通过隐藏窗口,在工作线程里发送消息后,由窗口去触发事件。但窗口的消息处理函数并没有收到任何消息,是否能给出一点详细的说明?
      

  3.   

    那个隐藏窗口必须是在你的主线程(非工作线程)中创建的,否则就没有意义,在这个隐藏窗口的消息响应函数中再触发事件在该种情况下你从工作线程中往隐藏窗口发消息,其实是在两个线程间发消息,sendmessage,postmessage都可以的