The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Initial Window Size

I'm designing and developing a desktop Windows app, and am trying to work out what's a reasonable initial size for it. I've been unable to find any guidelines for this. Does anyone have tips?

The app can cope with a small window (800 x 600) and can effectively make use of as much space as it can get. Opening maximised is a possibility, but users with really big screens might get ticked off.

The app will remember the user's settings, so if the user resizes the window and closes the app, the next time it is launched it will keep the new size.
Steve McLeod Send private email
Thursday, February 08, 2007
If you're remembering the window size each time they close the program, you're already doing more than most programs do.  I don't think anyone will care how big the window is the first time you run.  (I'd go with maximized the first time unless there's a compelling reason not to.)

Question: Are you saving the window size when they resize, or only when they close?  I'd recommend the former, so that even if the program stops abruptly for some reason, the window size will still have been saved.
Kyralessa Send private email
Thursday, February 08, 2007
And hopefully your code is smart enough to reposition the window correctly if it was last used on a second (or third) monitor and that monitor is no longer there. There is nothing worse than an application opening offscreen because it isn't smart enough to position itself back onto the main desktop when appropriate.

That's just one of my many multi-monitor pet peeves!
dood mcdoogle
Thursday, February 08, 2007
+1 that remembering the last setting makes this less of a concern and better usability, although there are a population of users out there that either don’t know how to resize their windows or never think to do it (remember Ask Tog’s Maximizing Windows article). But to answer your question, the initial size should be no larger than the largest size that still adds appreciably to the user's experience for the most likely uses.

For example, a form interface might “make use” of a larger window by spreading the fields out or using larger font, but there’s little advantage for most users in making the normal font larger than 12 point or the space between fields more than 10 pixels, so make the initial window size big enough to show all fields at a reasonable size and spacing without scrolling. Same with a window for a table, but note that if the most likely uses include a large number of rows, the height will almost certainly be full screen height. A document-type app like a word processor and maybe a vector drawing program has maximum usable dimension of about 1200 pixels high and 900 wide –enough to show a 8.5 by 11 inch page at 100% zoom in portrait orientation. Detailed maps for an individual’s use gain usability as they increase in size until they’re about 2 by 3 feet. A window that shows a map generally should default to maximized.

There may be other considerations, such as will the window likely be used with other windows, like a modeless dialog box, another primary window, or even another app, in which case you may want to leave enough screen space to show all windows without one occluding the other. Despite all the emphasis on multitasking these days, however, users usually attend to a single window at a time, so unless frequent attention switching among windows is part of a documented task, I wouldn’t worry too much about it.

It’s like any default: design for the most likely cases.
Michael Zuschlag Send private email
Thursday, February 08, 2007
When calling CreateWindow, use CW_USEDEFAULT for the x/y/width/height items. Then when calling ShowWindow, use SW_SHOW. If you are saving the window placement (with GetWindowPlacement/SetWIndowPlacement, right? :), this is all you need to do for a pleasing experience.
Thursday, February 08, 2007
"CreateWindow"? "CW_USEDEFAULT"? You're kidding right? Who in the heck actually directly calls the Win API anymore? Man, talk about doing things the hard way!
Thursday, February 08, 2007
OP here: I should add that I am a Java developer. I don't use (or know much about) the Win API. And Java seems to lack any "use default size" feature for creating application windows.
Steve McLeod Send private email
Friday, February 09, 2007
"Who in the heck actually directly calls the Win API anymore?"

Smart people.
Wayne B Send private email
Friday, February 09, 2007
> Man, talk about doing things the hard way!

Out of curiosity, exactly what is "hard" about calling CreateWindow?

Using it seems pretty simple to me ;)
Jussi Jumppanen
Sunday, February 11, 2007
Only pure API wrapped in classes!
And no MFC, please!..
asmguru62 Send private email
Monday, February 12, 2007
"The app will remember the user's settings, so if the user resizes the window and closes the app, the next time it is launched it will keep the new size. "

Here are some more suggestions:

1. Save the window position/size along with the resolution (800x600) to which it applies.  If the user changes the resolution he has to resize again.

2. Limit the user's sizing/ dragging to the screen coordinates (or virtual screen coordinates in case of multimon) so that the user doesn't have to position the window precisely at the edges.  He just has to slam the mouse to the top/bottom/left/right to extend/move the window to the maximum in that direction without bothering to slow down at the edges.  ie. you take care that the window doesn't fall off the edges so the user doesn't have to care for that.
Donald Duck
Sunday, February 18, 2007

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz