Holy cow, I wrote a book!
A while ago,
I mentioned that
there are many applications that rely on WM_PAINT
messages being delivered even if there is nothing to paint
because they put business logic inside their WM_PAINT handler.
As a result,
Windows sends them dummy WM_PAINT messages.
Jerry Pisk opines,
Thanks to the Windows team going out of their way
not to break poorly written applications
developers once again have no incentive to clean up their act
and actually write working applications.
If an application requires a dummy WM_PAINT
not to crash it should be made to crash as soon as possible
so the developers go in and fix it before releasing their "code".
In other words, Jerry recommends that Microsoft use the time machine
that Microsoft Research has been secretly perfecting for the past
(They will sometimes
take it out for a spin and fail to cover their tracks.)
In 1993, Company X writes a program that relies on
WM_PAINT messages arriving in a particular order
relative to other messages.
(And just to make things more interesting, in 1994,
Company X goes out of business, or they discontinue the program
in question, or the only person who understands the code leaves
the company or dies in a plane crash.)
In 1995, changes to Windows alter the order of messages,
and in particular,
WM_PAINT messages are no longer sent under certain
I suspect that the reason for this is the introduction of the taskbar.
Before the taskbar,
minimized windows appeared as icons on your desktop
and therefore received WM_PAINT messages while minimized.
But now that applications minimize to the taskbar,
minimized windows are sent off screen and never actually paint.
The taskbar button does the job of representing the program on the
Okay, now let's put Jerry in charge of solving this compatibility
He recommends that instead of sending a dummy WM_PAINT
message to these programs to keep them happy,
these programs should instead be made to crash as soon as possible,
so that the developers can go in and fix the problem before they
release the program.
In other words, he wants to take the Microsoft Research time machine
back to 1993 with a beta copy of Windows 95 and give it to the
programmers at Company X and tell them,
"Your program crashes on this future version of Windows that doesn't
exist yet in your time.
Fix the problem before you release your code.
(Oh, and by the way,
the Blue Jays are going to repeat.)"
Or maybe I misunderstood his recommendation.