INFO: WM_ACTIVATEAPP Has lParam of Zero (0) (135785)



The information in this article applies to:

  • Microsoft Platform Software Development Kit (SDK) 1.0

This article was previously published under Q135785

SUMMARY

Although the current Win32 documentation does not specifically indicate this, it is possible (and very likely) that the WM_ACTIVATEAPP message will be received by an application with the lParam equal to 0. You can in fact get 0 in lParam when activating and deactivating.

MORE INFORMATION

In previous versions of Windows, activation and deactivation used to be synchronous. This meant that you could never switch away from an application that was locked up because the application becoming active had to wait for a synchronous reply from the application being deactivated. The activating application would get stuck waiting for the deactivating application to process and return from the WM_ACTIVATEAPP, WM_ACTIVATE, and WM_NCACTIVATE messages.

In Windows 95 and Windows NT, Microsoft removed every place where these types of synchronous lockups can occur. When asynchronous activation occurs, the activating application becomes active immediately, and the messages to the deactivating application occur later. This means two things:
  • An application can be terminated in the middle of this process. If this happens, the thread ID/task handle that is passed in the lParam is invalid.
  • When the deactivated application gets notified, it is possible that the activated application is no longer active. A third application might have been activated in the interim.

Modification Type:MinorLast Reviewed:7/11/2005
Keywords:kbinfo kbWndw KB135785