In the month after DirectX 3 was released, "directx" became the number one most-searched-for term on microsoft.com. That in itself wasn't too surprising. What was more surprising was the word in sixth place: "sex". That puzzles me to this day. What kind of people search for "sex" on microsoft.com? And what were they expecting to find?
The people who work on the next generation of the window manager, known as the Desktop Window Manager (DWM), told me that their original plan was to get rid of the compatibility hack that says that invalidating the null window invalidates the entire desktop, but by an amazing coincidence, two days after I posted that article, they received a repo...
The release of Windows 2000 introduced a new setting: "Hide underlined letters for keyboard navigation until I press the Alt key," which defaults on for most Western languages. What's the story behind this setting?
I still have the rationale from the user interface designer who introduced this feature. Here's a redacted copy:
To support o...
Add this to your trivia pile. Keith Combs links to a pair of articles that that go into the history behind how Start Me Up become the theme for the Windows 95 launch. Part 1, Part 2.
An anonymous commenter asked why the function takes an parameter if the first thing it's going to do is convert the instance handle into a file name.
Because that's not how it worked in 16-bit Windows.
In 16-bit Windows there was no such thing as hook injection. All 16-bit Windows applications ran in the same address space, so there was no nee...
We saw last time
how windows hooks were implemented in 16-bit Windows.
Even though the was an opaque data type that
should have been treated like a handle,
many programs "knew enough to be dangerous"
and took advantage of the fact that the
was just a pointer to the previous hook procedure.
The most common way of abusing this knowledge was
by ...
The mechanism for keeping track of window hooks was very
different in 16-bit Windows.
The functions involved were ,
and .
The first two functions still exist today, but the third one has
been replaced with a macro:
Disclaimer: All code below is "reconstructed from memory".
The spirit of the code is intact, but the precise details
may be off.
...
The whole point of dynamic link libraries (DLLs) is that the linkage is dynamic. Whereas statically-linked libraries are built into the final product, a module that uses a dynamically-linked library merely says, "I would like function X from Y.DLL, please." This technique has advantages and disadvantages. One advantage is more efficient use of stor...