The Old New Thing

Thread messages are eaten by modal loops

Thread messages (as generated by the function) do not go anywhere when passed to the function. This is obvious if you think about it, because there is no window handle associated with a thread message. has no idea what to do with a message with no associated window. It has no choice but to throw the message away. This has dire ...

Welcome to Millennium Tower, due for completion in May 2005

The friend who brought to my attention the guide to British pub etiquette reports that Portsmouth's Millennium Tower, centerpiece of the Millennium Project, is still not finished, due for completion (scroll to the end of the article) in May 2005. To disguise the embarrassment, they've renamed it to Spinnaker Tower, thereby—as the ...

What is the HINSTANCE passed to SetWindowsHookEx used for?

The function accepts a parameter. The documentation explains that it is a handle to the DLL containing the hook procedure. Why does the window manager need to have this handle? It needs the handle so it knows which DLL to load into each process when the hook fires. It injects the DLL you pass, then calls the function you pass. Clearly ...

The new scratch program

I think it's time to update the scratch program we've been using for the past year. I hear there's this new language called C++ that's going to become really popular any day now, so let's hop on the bandwagon! The basic idea of this program is the same as our old scratch program, but now it has that fresh lemony C++ scent. Instead of ...

Sweden's Worst Driver

Swedish Television announced a new reality-based television program called Sweden's Worst Driver (Sveriges värsta bilförare). I've done a bad job of translating some excerpts: TV4 has gathered seven of Sweden's worst drivers and subjects them to a series of tests and challenges. Those who complete each exercise the best get a prize...

The Itanium’s so-called stack

Last year I alluded to the fact that the Itanium processor has two stacks. The one that is traditionally thought of as "the stack" (and the one that the register refers to) is a manually managed block of memory from which a function can carve out space to use during its execution. For example, if you declare a local variable like then ...

What is the DC brush good for?

The DC brush is a stock brush associated with the device context. Like the system color brushes, the color of the DC brush changes dynamically, but whereas the system color brushes change color based on the system colors, the color of the DC brush changes at your command. The DC brush is handy when you need a solid color brush for a very...

When people ask for security holes as features: Hiding files from Explorer

By default, Explorer does not show files that have the flag, since somebody went out of their way to hide those files from view. You can, of course, ask that such files be shown anyway by going to Folder Options and selecting "Show hidden files and folders". This shows files and folders even if they are marked as . On the other hand, files ...

Project update: Voyage to Our Hollow Earth

In December 2003, I reported on Steve Currey's expedition to the hole at the top of the earth, which at the time was scheduled for June 26, 2005. But on May 6, 2004, the site rescheduled the trip for Jun 26, 2006 with no explanation. The reservation form reminds you that the 25% deposit is non-refundable. Far be it from me to suggest that...