0

当在 IE 中切换选项卡等时,我的 IE 扩展中有以下内容要处理。 [ATL 项目,VS2008,使用 IDispEventImpl 的 C++]

SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_WINDOWSTATECHANGED,WindowStateChanged)
.
.
.    
void WindowStateChanged (DWORD dwFlags, DWORD dwValidFlagsMask);
.
.
.
.
void CHelloWorld::WindowStateChanged (DWORD dwFlags, DWORD dwValidFlagsMask){
    //I don't do anything here right now. Even if I have some piece of code like
    //ATLTRACE, IE just hangs

}

每当我运行我的代码时,IE 就会停止工作(我得到一个对话框“Internet Explorer 已停止工作”)我做错了什么?我的代码中可能缺少什么?或者,这是 IE8 中的错误吗?我正在使用 Windows 7 (eval) BTW。

4

1 回答 1

0

我多么愚蠢。我错过了这个:STDMETHODCALLTYPE 所以我的代码是:

SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_WINDOWSTATECHANGED,WindowStateChanged)
.
.
.    
void STDMETHODCALLTYPE WindowStateChanged (DWORD dwFlags, DWORD dwValidFlagsMask);
.
.
.
.
void STDMETHODCALLTYPE CHelloWorld::WindowStateChanged (DWORD dwFlags, DWORD dwValidFlagsMask){
    //I don't do anything here right now. Even if I have some piece of code like
    //ATLTRACE, IE just hangs

}

现在,IE 不再挂起。:)

于 2009-07-23T23:15:58.450 回答