The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts
The Brits once again come up with a clever solution to the problem of the scatterbrained client
My friend :: Wendy :: got into a state where she kept misplacing her passport. (I guess she keeps moving it around.) The first time she misplaced her passport and gave up looking for it, she reported it missing and received a replacement. Then she misplaced the replacement, and while searching for it, she found the original. She reported the first passport as found; this keeps the issuing government happy since they can take it off their If Somebody Tries To Use a Passport with This Number, Arrest Her list. But they can't reactivate the original passport, because it takes time for the updated list t...
Why doesn't the shell animation control tell me the dimensions of the animation it is displaying?
As we saw some time ago, the shell animation control suffers from many limitations because its job is to be a scaled-down animation control instead of one of its more full-featured counterparts. One customer wanted to know how to load an animation into the shell animation control and then query its dimensions. Well, there is no message that reveals the dimensions of the animation. Why not? Because you should already know. You can't use the shell animation control a general-purpose animation control because of those pesky limitations. You can only use animations that you yourself authored to conform to the cont...
Long-term temporary parking?
On my way to work, I saw a Notice of Proposed Land Use Action. The proposed new use for the property was listed as long-term temporary parking. What the heck is long-term temporary parking?
What is the maximum length of an environment variable?
Depends on who is setting it.
It appears that car park computers revert to their native language, German, when placed under stress
A car park in Birmingham switches from English to German in times of stress. That reminded me that over a decade ago, a colleague of mine noticed an error message on the screen at the exit to the parking garage at the Seattle-Tacoma International Airport. The way the airport works, you pick up a ticket as you enter, and you pay your parking fee at vending machines stationed around the parking garage, and at the exit, you insert the (paid) ticket into the machine, which verifies that you paid your parking fee and opens the gate. When my colleague pulled up to the machine, instead of displaying the expected Plea...
Microspeak: Future-proofing
It has been famously said that England and the United States are two countries separated by a common language. The same holds true for Microspeak. In the Redmond dialect of Microspeak, we talk about extensibility: Designing a system with specific points where features can be added in the future, often by outside parties. For example, an example of an extensibility point in the shell would be a context menu handler or a namespace extension. In the Reading dialect of Microspeak, the term for this is future-proofing. On the other hand, if you use the term future-proofing in Redmond, people will interpret it di...
It looks a little like CMD except there is white on the background
Surely by now you've seen the video where NextGenHacker101 shows you how to use the "Tracer T" program to view "how many IP's are looking at Google", their name, and connection speed (to then to then to then). (And commenter squizz explains why it "worked" in spite of the http prefix.) But more awesome is the fact that somebody ported the video to linux! Bonus video craziness: It's in Korean but somehow that just adds to the insanity. (Warning: Five minutes of your life you will never get back.) The comments on the YouTube video identify the song as "Bo Pee...
Why can't I use the linker to delay-load a function from kernel32?
For some time (I am too lazy to look up when it was introduced), the Visual Studio linker has supported a feature known as delay-loading. But why can't you use this feature to delay-load a function from ? It would be very handy: If you write the program fails to load on versions of Windows which do not support the function because the Win32 load rejects loading a module that contains unresolved references. On the other hand, if you could mark as delay-loaded, then the code above would work, since the call to would be redirected to a stub that calls . Since the is performed only when the code path is hit...
How do I suppress full window drag/resize for just one window?
A customer asked, Is there a way to turn off Full Window Drag on a single window? I have a resizable control that I would like not update itself while resizing. It so happens that I wrote a sample program ages ago to illustrate how to do this. You can find it in the Platform SDK under . The source code is also reproduced in this Knowledge Base article. In addition to deferring painting, you may also want to defer layout if layout is expensive for your window.