The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Aha, I found a counterexample to the documentation that says that <CODE>Query­Performance­Counter</CODE> never fails
Mar 4, 2026
Post comments count 0
Post likes count 0

Aha, I found a counterexample to the documentation that says that Query­Performance­Counter never fails

Raymond Chen
Raymond Chen

Of course, anything can happen if you break the rules.

Just for fun: A survey of write protect notches on floppy disks and other media
Mar 3, 2026
Post comments count 12
Post likes count 1

Just for fun: A survey of write protect notches on floppy disks and other media

Raymond Chen
Raymond Chen

Just some useless trivia.

What sort of horrible things happen if my dialog has a non-button with the control ID of <CODE>IDCANCEL</CODE>?
Mar 2, 2026
Post comments count 2
Post likes count 1

What sort of horrible things happen if my dialog has a non-button with the control ID of IDCANCEL?

Raymond Chen
Raymond Chen

You get notifications that might not make sense.

Intercepting messages inside <CODE>Is­Dialog­Message</CODE>, fine-tuning the message filter
Feb 27, 2026
Post comments count 3
Post likes count 2

Intercepting messages inside Is­Dialog­Message, fine-tuning the message filter

Raymond Chen
Raymond Chen

Making sure it triggers when you need it, and not when you don't.

Intercepting messages inside <CODE>Is­Dialog­Message</CODE>, installing the message filter
Feb 26, 2026
Post comments count 1
Post likes count 2

Intercepting messages inside Is­Dialog­Message, installing the message filter

Raymond Chen
Raymond Chen

Using an <CODE>Is­Dialog­Message</CODE> extension point.

Intercepting messages before <CODE>Is­Dialog­Message</CODE> can process them
Feb 25, 2026
Post comments count 4
Post likes count 1

Intercepting messages before Is­Dialog­Message can process them

Raymond Chen
Raymond Chen

Process the message before you let <CODE>Is­Dialog­Message</CODE> see it.

Customizing the ways the dialog manager dismisses itself: Isolating the Close pathway
Feb 24, 2026
Post comments count 2
Post likes count 2

Customizing the ways the dialog manager dismisses itself: Isolating the Close pathway

Raymond Chen
Raymond Chen

Intercepting the flow in your message loop.

Customizing the ways the dialog manager dismisses itself: Detecting the ESC key, second (failed) attempt
Feb 23, 2026
Post comments count 0
Post likes count 2

Customizing the ways the dialog manager dismisses itself: Detecting the ESC key, second (failed) attempt

Raymond Chen
Raymond Chen

Sniffing the synchronous keyboard state is still not precise enough.

The 2026/2027 Seattle Symphony subscription season at a glance
Feb 20, 2026
Post comments count 0
Post likes count 0

The 2026/2027 Seattle Symphony subscription season at a glance

Raymond Chen
Raymond Chen

The pocket reference guide for 2026/2027.

Customizing the ways the dialog manager dismisses itself: Detecting the ESC key, first (failed) attempt
Feb 20, 2026
Post comments count 12
Post likes count 3

Customizing the ways the dialog manager dismisses itself: Detecting the ESC key, first (failed) attempt

Raymond Chen
Raymond Chen

Sniffing the asynchronous keyboard state.

Exploring the signals the dialog manager uses for dismissing a dialog
Feb 19, 2026
Post comments count 1
Post likes count 6

Exploring the signals the dialog manager uses for dismissing a dialog

Raymond Chen
Raymond Chen

Summarizing the flow.

Could <CODE>Write­Process­Memory</CODE> be made faster by avoiding the intermediate buffer?
Feb 18, 2026
Post comments count 3
Post likes count 2

Could Write­Process­Memory be made faster by avoiding the intermediate buffer?

Raymond Chen
Raymond Chen

I guess it could, but why bother?

Microspeak: Escrow
Feb 17, 2026
Post comments count 8
Post likes count 2

Microspeak: Escrow

Raymond Chen
Raymond Chen

Final build, final, final, final 2, ship this one.

It rather involved being on the other side of the airtight hatchway: Tricking(?) a program into reading files
Feb 16, 2026
Post comments count 10
Post likes count 2

It rather involved being on the other side of the airtight hatchway: Tricking(?) a program into reading files

Raymond Chen
Raymond Chen

Is it really a trick when reading the file is the purpose of the program?

How can I distinguish between the numeric keypad 0 and the top-row 0 in the <CODE>WM_<WBR>CHAR</CODE> message?
Feb 13, 2026
Post comments count 10
Post likes count 4

How can I distinguish between the numeric keypad 0 and the top-row 0 in the WM_CHAR message?

Raymond Chen
Raymond Chen

See if it matches the scan code.

How can I distinguish between the numeric keypad 0 and the top-row 0 in the <CODE>WM_<WBR>KEY­DOWN</CODE> message?
Feb 12, 2026
Post comments count 2
Post likes count 3

How can I distinguish between the numeric keypad 0 and the top-row 0 in the WM_KEY­DOWN message?

Raymond Chen
Raymond Chen

Check whether it is an extended key.

How do I suppress the hover effects when I put a Win32 common controls ListView in single-click mode?
Feb 11, 2026
Post comments count 0
Post likes count 4

How do I suppress the hover effects when I put a Win32 common controls ListView in single-click mode?

Raymond Chen
Raymond Chen

You can prevent the item from becoming hot-tracked.

How did Windows 95 get permission to put the Weezer video <I>Buddy Holly</I> on the CD?
Feb 10, 2026
Post comments count 11
Post likes count 6

How did Windows 95 get permission to put the Weezer video Buddy Holly on the CD?

Raymond Chen
Raymond Chen

Asking nicely, and asking a lot of people.