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 ...
Comments are closed.0 0
Code

Logical consequences of the way Windows converts single-clicks into double-clicks

First, I'm going to refer you to the MSDN documentation on mouse clicks, since that's the starting point. I'm going to assume that you know the mechanics of how single-clicks are converted to double-clicks. Okay, now that you've read it, let's talk about some logical consequences of that article and what it means for the way you design ...
Comments are closed.0 0
Code

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 RegisterClass and RegisterClassEx functions return an ATOM. What is that ATOM 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...

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 ...

Why is there a separate GetSystemDirectory function?

If the system directory is always %windir%\SYSTEM32, 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 %windir%\SYSTEM. That's also the name of the system directory for Windows 95-based systems and all the 16-bit versions of Windows. But even ...

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 ...
Comments are closed.0 0
Code