MFC ActiveX控件问题
kyowl 2009-03-12 09:21:26 现在碰到这么个问题,请大家帮忙看看:
一个MFC 单文档程序,其中有COM编程(主要是实现OPC客户端),用的是CoInitialEX(NULL, COINT_MULTITHREAD)初始化
的COM库。应该算是MTA套间吧。现另有一个用MFC开发的ActiveX控件,不知道是STA还是MTA的,估计MFC开发的都是STA的?
在这个单文档程序里无法使用该ActiveX控件(比如,把该控件放在对话框上,程序运行后,该对话框就无法正常弹出了,跟踪发现
调用DoModal函数立即返回了),改成CoInitial(NULL)初始化COM库或者用COINT_APARTMENTTHREAD参数调用CoInitialEX的
话可以正常使用该ActiveX控件。
不知道这是不是所谓的套间的冲突,如果需要使用MFC开发的ActiveX控件,是不是必须用STA线程模型的COM库才行,有没有
办法修改该ActiveX控件,使得在CoinitialEx(NULL, COINT_MULTITHREAD)下可以正常运行? 因为不想盲目改成CoInitial()
来初始化,MSDN上面说不应该用它,应该使用CoInitialEx函数。