Holy cow, I wrote a book!
Just read it.
The 10th European Conference on Computer Supported Co-operative Work
was held in Limerick, Ireland,
and as you'd expect there were a lot of speakers and breakout sessions
oh my God, look at those cute ducks!
A colleague of mine visited an internal Web site for task ABC
and found that the site was no longer there.
Instead it was replaced with a simple message:
Designed with the user in mind you will now find
contextual ABC and DEF information served up in a secure format alongside
all GHI information.
Access to relevant multi-perspective content will enable
faster resolution for your GHI needs.
HTTP/1.1 301 Moved Permanently
and then there's
RealGetWindowClass more real?
Recall from last time that
the Real... functions were added to support
The goal with RealGetWindowClass is to help
accessibility tools identify what kind of window it is working with,
even if the application did a little disguising in the form of
If you ask
RealGetWindowClass for the class name of a window,
it digs through all the superclassing and returns the name of the
base class (if the base class is one of the standard window manager classes).
For example, if your application superclassed the button
a call to GetClassName would return
but a call to
RealGetWindowClass would return button.
Returning the underlying window class allows accessibility tools
to know that the user is interacting with some type of button control
(albeit a customized one),
so that it can adjust the interaction to something appropriate
the accessibility tool would just see AwesomeButton,
and it would probably shrug and say,
"I have no idea what a AwesomeButton is."
(I guess you could have the accessibility tool do a
strstr for button,
but then it would be faked out by classes like
ButtonBar or applications which superclass
a button but call it something completely different like
If you read the winuser.h header file,
you can see a comment next to the
* This gets the name of the window TYPE, not class. This allows us to
* recognize ThunderButton32 et al.
What is ThunderButton32?
the code name for Visual Basic 1.0.
Visual Basic superclassed all the standard Windows controls
and called its superclassed version ThunderWhatever.
Commenter S asks,
"What happened to the return code from WinMain in a Windows 3.1 app?"
After all, there was no
GetExitCodeProcess function in 16-bit Windows.
Basically, the exit code vanished into the ether.
Unless you captured it.
The Toolhelp library provided a low-level hook into various parts of
the kernel, allowing you to monitor, among other things, the
creation and destruction of tasks.
how you captured the return code of a Windows program
in 16-bit Windows.
But if you didn't catch it as it happened, it was gone forever,
lost in the ether.
Bill Littlefield of NPR's sports program
Only a Game
interviews Susan Warren about competitive pumpkin-growing.
[Direct link - Real format]
An excerpt from her book
was printed in
The Wall Street Journal:
The Race to Break the Squash Barrier,
the quest to grow a one-ton pumpkin.
I'm fascinated by these subcultures of people obsessed with one thing.
A customer reported that the translucent preview shows by
showed the wrong dimensions for their application window.
"As you can see in the screen shot, the preview is too wide.
Our application window has a maximum width,
but the preview is fully half the width of the screen.
How can we disable the Aero Snap feature?"
giving up so easily?
Sounds like you're throwing the baby out with the bathwater.
To control the size of the preview window used by Aero Snap,
you respond to the same message you've already been responding
to in order to tell Windows the valid range of sizes for your
Start with our
and make the following changes:
void OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO pmmi)
pmmi->ptMaxTrackSize.x = 400;
// add to WndProc
HANDLE_MSG(hwnd, WM_GETMINMAXINFO, OnGetMinMaxInfo);
We specify in the OnGetMinMaxInfo
the maximum width for the window is 400 pixels.
(In real life, of course, you wouldn't hard-code the width,
but this is just a proof of concept program.)
Since we don't touch ptMaxTrackSize.y,
we impose no additional constraints on the window height
beyond what comes with Windows by default.
Run this program, and use Aero Snap to shove it against the
edges of the screen.
Observe that the Aero Snap preview respects our maximum
I never heard back from the customer, so I assume this simple
solution worked for them.
The fact that they had to ask this question tells me that
they hadn't been handling the WM_GETMINMAXINFO
instead, they were enforcing their window size procedurally
after the window manager already decided on the wrong size.
Either they didn't seem to mind that the maximize and restore
animations showed the window animating to the wrong size,
or they couldn't figure out how to fix that problem either.
It's that time again: Sending some link love to my colleagues.
A number of credit card companies have
agreed to a class action lawsuit settlement.
Check whether your credit card is on the list and you meet the
other criteria, but if you do, you could get a $25 refund.
Some months ago, I wanted to make a reservation at my favorite
Seattle restaurant for special occasions:
Their original Wallingford location was so small,
you had to go into the kitchen to use the rest room.
When they moved to Fremont, they made a special point
of putting the rest room in the kitchen for old times' sake.)
One evening, I called to make a reservation, and since they aren't
open on Sundays, I was taken off guard when a live human being answered.
I said that I was expecting the answering machine since I thought
they were closed.
The person who answered explained,
"Well, we are closed.
I'm not really supposed to be here.
I'm just baking some cookies."
And then he took my reservation.
I'm assuming he actually works there and wasn't some guy who broke
into the restaurant to bake cookies.