MFC ActiveX OCX 中的消息问题
本人用MFC ActiveX写了一个OCX,内部使用了多线程,如果在多线程中直接触发事件,那么会引起VB、C#、Delphi调用异常,因而改为在多线程中用SendMessage来触发事件。现在把OCX的属性改为INVISIBLEATRUNTIME后,OCX的m_hWnd总是为NULL,因此无法接收线程中Send的Message,为解决此问题,我在OCX的构造函数里RecreateControlWindow(),此时OCX的m_hWnd便不再为NULL,故能正常的接收Message然后触发事件。于是VB、C#、Delphi能正常接收事件了。可是在Delphi的调用中又出现了另一个问题,那就是把OCX拖到窗体,运行界面,啥也不干,然后关闭窗体,Delphi就出错了(是在Delphi的IDE界面下运行出错,如果直接运行exe便正常),通过调试定位,知道原因在于RecreateControlWindow()后,Delphi退出释放有问题。此问题困绕我好几天,无法解决,望各位高人指点迷津。