我现在遇到了一个奇怪的问题。情况如下:
主线程承载主窗口。
主线程创建一个子窗口。
主线程创建一个子线程。
子线程创建一个 IE 控件。
子线程将 IE Control 附加到子窗口。
问题是一旦子线程阻塞(例如 ::Sleep(10 * 1000 ),主线程的 GetMessage 函数就不能再获取消息了,这意味着主线程也被阻塞了!我不明白。为什么子线程可以影响主线程吗?如果我注释附加代码。子线程块根本不会阻塞主线程!
以下是附加代码片段:
CComPtr<IUnknown> punkCtrl;
HRESULT hr = CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&punkCtrl);
if( SUCCEEDED(hr) )
{
m_spWebBrowser2 = punkCtrl;
if( m_spWebBrowser2 )
{
CComPtr<IAxWinHostWindow> spWinHost;
HRESULT hr = QueryHost(&spWinHost);
if (spWinHost)
{
spWinHost->AttachControl(m_spWebBrowser2,m_hWnd);
}
}
}
有人可以帮我解决这个问题吗?