The Old New Thing

Implementing higher-order clicks

Another question people ask is "How do I do triple-click or higher?" Once you see the algorithm for double-clicks, extending it to higher order clicks should be fairly natural. The first thing you probably should do is to remove the CS_DBLCLKS style from your class because you want to do multiple-click management manually. Next, you can ...

The procedure entry point SHCreateThreadRef could not be located…

Some people smarter than me have been working on this problem, and here's what they figured out. First, I'll just reprint their analysis (so that people with the problem and are searching for the solution can find it), and then we can discuss it. Update (18 October 2005): The official version of this document is now available. Please use ...

Dispatching items collected from the suggestion box

Okay, I got around to digging through the suggestion box, and today I'm going to dispatch the items that don't require much thought but seemed worthy of reply to some degree. You won't learn much of anything today. Other entries require more thought. Each non-code entry takes me a half hour or so, more if I have to do research (if ...

People lie on surveys and focus groups, often unwittingly

Philip Su's discussion of early versions of Microsoft Money triggered a topic that had been sitting in the back of my mind for a while: That people lie on surveys and focus groups, often unwittingly. I can think of three types of lies offhand. (I'm not counting malicious lying; that is, intentional lying for the purpose of undermining the ...

What’s the atom returned by RegisterClass useful for?

The and functions return an What is that good for? The names of all registered window classes is kept in an atom table internal to USER32. The value returned by the class registration functions is that atom. You can also retrieve the atom for a window class by asking a window of that class for its class atom via . The atom can be ...

Why is there a separate GetSystemDirectory function?

If the system directory is always , why is there a special function to get it? Because it wasn't always that. For 16-bit programs on Windows NT, the system directory is . That's also the name of the system directory for Windows 95-based systems and all the 16-bit versions of Windows. But even in the 16-bit world, if it was ...

Cooking for engineers

All geeks who enjoy cooking (and who have cable television) worship Alton Brown's program Good Eats. It's the cooking show for engineers. And recently I discovered a cooking blog that is designed for engineers, named, not surprisingly, Cooking for Engineers. Marvel at the elegance and beauty of the recipe diagrams. I have no idea whether ...

How to host an IContextMenu, part 11 – Composite extensions – composition

Okay, now that we have two context menu handlers we want to compose (namely, the "real" one from the shell namespace and a "fake" one that contains bonus commands we want to add), we can use merge them together by means of a composite context menu handler. The kernel of the composite context menu is to multiplex multiple context menus onto ...