The wisdom of seve^H^H^H^Hsixth graders: Living without electronics for a week

Sixth grade students (ages 11 to 12, roughly) were instructed to imagine that they have no television, computer, or telephone for a week and write an essay (in the form of a letter to their parents) on what they would do with their time and why. The assignment was given under standardized test conditions: 90…

11

Keyboard shortcut for resizing all columns in a listview control to fit

The keyboard shortcut for resizing all columns in a report-mode (also known as Details mode) list view control to fit the current content width is Ctrl+Num+. That’s the + key on the numeric keypad. (If you’re using Explorer, you can also right-click the column header and choose Size All Columns to Fit.) Note that this…

17

In the conversion to 64-bit Windows, why were some parameters not upgraded to SIZE_T?

James wonders why many functions kept DWORD for parameter lengths instead of upgrading to SIZE_T or DWORD_PTR. When updating the interfaces for 64-bit Windows, there were a few guiding principles. Here are two of them. Don’t change an interface unless you really need to. Do you really need to? Changing an interface causes all sorts…

29

Whether the Unicode Bidi algorithm is intuitive depends on your definition of "intuitive"

In Windows, we spend a good amount of time with the pseudo-mirrored build. And one of the things that you notice is that pseudo-mirrored text comes out looking really weird. For example, the string really? (yup). comes out pseudo-mirrored as .(really? (yup. Just for fun, here’s here’s how your browser renders it: really? (yup). Even…

11

Keyboard layouts aren't like Beetlejuice - they won't appear just because you say their name

A customer reported a bug in Windows Vista Home Editions: We are handling a Ctrl+V keyboard event and want to interpret it in the context of a US-English keyboard. // This keyState represents no keys pressed except for Ctrl BYTE keyState[256] = {0}; keyState[VK_CONTROL] = 0x80; // This is the handle for the US-English keyboard…

16

You can't use the WM_USER message in a dialog box

Today, I’m not actually going to say anything new. I’m just going to collate information I’ve already written under a better title to improve search engine optimization. A customer reported that they did the following but found that it didn’t work: #define MDM_SETITEMCOUNT WM_USER INT_PTR CALLBACK MyDlgProc(HWND hdlg, UINT wm, WPARAM wParam, LPARAM lParam) {…

18

Diversion: Generating a random color from JavaScript

A colleague posed a little puzzle for a fun little app he was writing in HTML: He wanted to generate a random color. If you search around the intertubes, you can find several possible attempts at a solution, like this collection, and an interesting example that has trouble with the pigeonhole principle. The original function…

32

How do you come up with new shortcut keys?

Anon asks, “How do you come up with new shortcut keys and how do you deal with different keyboard layouts? What is the process; is there a company-wide procedure to keep things consistent?” This is several questions (none of them really a suggestion, but I’ve given up on making the Suggestion Box about suggestions; now…

17

Using WM_COPYDATA to marshal message parameters since the window manager otherwise doesn't know how

Miral asks for the recommended way of passing messages across processes if they require custom marshaling. There is no one recommended way of doing the custom marshaling, although some are hackier than others. Probably the most architecturally beautiful way of doing it is to use a mechanism that does perform automatic marshaling, like COM and…

17