2009-07-23 4 views
0

je suit dans mon extension IE pour gérer lorsqu'un onglet est activé dans Internet Explorer, etc. [projet ATL, VS2008, C++ en utilisant IDispEventImpl]Manipulation windowStateChanged - Changement Tab dans IE l'extension

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 

} 

Chaque fois que Je cours mon code, l'IE cesse de fonctionner (j'obtiens un dialogue "Internet Explorer a cessé de fonctionner") Que fais-je de mal? Qu'est-ce qui pourrait manquer dans mon code? Ou, est-ce un bug dans IE8? Je travaille sur Windows 7 (eval) BTW.

+0

Vous devrez exécuter votre code sous un débogueur pour déterminer où le plantage est. – EricLaw

Répondre

0

Comme c'est stupide de ma part. J'ai raté ceci: STDMETHODCALLTYPE donc mon code est:

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 

} 

Maintenant, IE se bloque plus. :)