How much are you jamming into the page design? A good design shouldn't be too cluttered, and should fit well with 800 pixels width. The extra space actually improves the usability. Ever notice how the Google search box page is made almost entirely out of white space?
An idea I've been playing around with in my head is the idea of a tree of container elements. Each one can split based on proportional ratios, or based on fixed pixel values, and is aligned to one of the container's edges.
Each node in the tree would only ever worry about:
1. Splitting itself correctly, and
2. recursively calculating the coordinates of the direct child nodes.
Using that, an interface of arbitrary complexity could be built. It would resize well, with parts staying fixed to edges, and parts resizing themselves as necessary.
Give the nodes identifiers (e.g. main_menu, msg_box), maybe store them in a separate linked list or hash map for faster referencing, and you can obtain box coordinates based on mnemonic names.