Microsoft KB Archive/939851

= You receive a WM_ACTIVATE message after you receive a WM_KILLFOCUS message in Internet Explorer 7 =

Article ID: 939851

Article Last Modified on 11/28/2007

-

APPLIES TO


 * Windows Internet Explorer 7

-



SYMPTOMS
Consider the following scenario. You develop an ActiveX control that is hosted in Windows Internet Explorer 7. This ActiveX control handles the WM_KILLFOCUS message. This ActiveX control also implements the IOleInPlaceActiveObject::OnFrameWindowActivate method. When a modal dialog box appears in Internet Explorer 7, you may notice that the OnFrameWindowActivate method is called after your window receives the WM_KILLFOCUS message. However, in Microsoft Internet Explorer 6, the OnFrameWindowActivate method is called before the WM_KILLFOCUS message is received.



CAUSE
This behavior occurs because of a design change in Internet Explorer 7. When a modal dialog box is opened from the ActiveX control in Internet Explorer 7, the User32.dll process sends the WM_ACTIVATE message to the top window. Then, the User32.dll process sends the WM_KILLFOCUS message to the focus window.

In Internet Explorer 6, the WM_ACTIVATE message is converted directly to call the IOleInPlaceActiveObject::OnFrameWindowActivate method. This behavior occurs because the top window is located on the same thread as the ActiveX control. However, in Internet Explorer 7, the top window is located on a different thread because each tab runs on its own thread. To safely notify the tab thread of the activation change, the top window must run a PostMessage function. Therefore, the WM_ACTIVATE message arrives later than the WM_KILLFOCUS message.



STATUS
This behavior is by design.



MORE INFORMATION
For more information about the WM_ACTIVATE message, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/ms646274.aspx

For more information about the WM_KILLFOCUS message, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/ms646282.aspx

Call stack information
If you use the WinDbg debugger to debug this problem in Internet Explorer 6, the call stack information may resemble the following: IOleInPlaceActiveObjectImpl::OnFrameWindowActivate 0 CaaOCXIE::OnKillFocus If you use the WinDbg debugger to debug this problem in Internet Explorer 7, the call stack information may resemble the following: CaaOCXIE::OnKillFocus IOleInPlaceActiveObjectImpl::OnFrameWindowActivate 0

Keywords: kbtshoot kbbug kbfix kbpubtypekc kbexpertiseinter KB939851

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.