The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Sep 24, 2026
Post comments count 4
Post likes count 5

No, really, you need to pass all unhandled messages to DefWindowProc, part 2

Raymond Chen

Another example to add to the list.

Sep 23, 2026
Post comments count 8
Post likes count 3

When working with Win32 FILETIME, don’t forget that you have std::chrono now

Raymond Chen

Let the library do the math for you.

Sep 22, 2026
Post comments count 19
Post likes count 3

A brief history of Windows scroll bar shortcuts

Raymond Chen

Right-clicking and shift-clicking.

Sep 21, 2026
Post comments count 9
Post likes count 4

What’s the highest legal FILETIME? Is it safe to use?

Raymond Chen

Being wary of how people use it and how it interacts with other types.

Sep 18, 2026
Post comments count 7
Post likes count 2

Comparing exception behavior of magic statics, std::call_once, and std::async

Raymond Chen

Do you try again or give up?

Sep 17, 2026
Post comments count 2
Post likes count 3

std::call_once vs. std::async

Raymond Chen

Simple vs complex machinery.

Sep 16, 2026
Post comments count 1
Post likes count 4

Magic statics vs. std::call_once

Raymond Chen

They sort of do the same thing, but differently.

Sep 15, 2026
Post comments count 10
Post likes count 3

Why do Microsoft job levels start in the high 50’s instead of starting at a sane number like 1?

Raymond Chen

It used to start at 1, but that was the old system.

Sep 14, 2026
Post comments count 8
Post likes count 3

Why didn’t Read­Directory­ChangesW provide a way to correlate the two sides of a rename operation?

Raymond Chen

Perhaps it wasn't necessary, or perhaps it didn't occur to them that this a problem.