First of all correction:

You are not catching any event. You are handling WM_NOTIFY message that in this case notifies about mouse click on the control, by setting a notification code to NM_CLICK. No events of any kind are being used here.

You have to realize that Windows OS is not event driven, it is message driven system.

Unfortunately, somebody from MS, decided to use this word in the menu for inserting message handlers and this is unfortunate, since it confuses programmers who just recently started programming for Windows.

C# and other .NET languages, internally use so called events but they are language specific implementation and have nothing to do Windows event, used for example for thread synchronization.
C# events are generated (fired) by the framework from Windows message handler anyway.

Now, to add to Arjay’s response:

You can have scenario, when mouse capture is taken by another control, and first click is used to release capture therefore list control (or any other control) would react only to the second click.