The Old New Thing

The hollow brush

What is the hollow brush for? The hollow brush is a brush that doesn't do anything. You can use it when you're forced to use a brush but you don't want to. As one example, you can use it as your class brush. Then when your program stops responding and Windows decide to do the "white flash" (see yesterday's entry), it grabs the hollow brush ...

David Hasselhoff's daughters normal in every way

(Forwarded to me my a friend who is apparently fascinated with David Hasselhoff.) David Hasselhoff says his daughters hate his music and change the channel whenever Knight Rider comes on the TV. Okay, I defended the Germans last week, but this one baffles even me. Do the Germans not realize that David Hasselhoff is a joke? Er war ein ...

German as RPN

It should be noted that "Reverse Polish Notation" is named in honor of the Polish logician Jan Lukasiewicz, who developed prefix notation, wherein the operator comes before the operands. Postfix notation proved more useful for stack-based arithmetic computations, and so the opposite of prefix notation came to be known as "Reverse Polish ...

The white flash

If you had a program that didn't process messages for a while, but it needed to be painted for whatever reason (say, somebody uncovered it), Windows would eventually lose patience with you and paint your window white. Or at least, that's what people would claim. Actually, Windows is painting your window with your class background brush. Since...

German, the language of love?

Love lures French kids to German: Come and learn German - a language of love! Hundreds of advertisements in France this week will promote the unusual message to try to woo teenagers to a language they often consider difficult and ugly. "Language is the key to understand a partner, his culture, working manners and lifestyle," [...

What tools should I assume everybody has?

My code samples assume you are using the latest header files from the Platform SDK (free download), the one that includes support for Win64. If you have an older SDK then you won't have various new data types like UINT_PTR and INT_PTR and should just use UINT and INT. I write code that is Win64-compliant as a matter of course since all code ...

Fixing security holes in other programs

Any crash report that involves a buffer overrun quickly escalates in priority. The last few that came my way were actually bugs in other programs that were detected by Windows. For example, there were a few programs that responded to the LVN_GETDISPINFO notification by overflowing the LVITEM.pszText buffer, writing more than LVITEM.cchTextMax...