Marc,
Originally I had dialogs designed in the resource utility. First I modified those. Now I simply create them from scratch. Look at this sample:
INVLIST DIALOG 0, 0, 850, 460
STYLE WS_POPUP | WS_CAPTION
CAPTION "Invoice Manager"
{
CONTROL "", 100, "TBar", 0|WS_CHILD|WS_VISIBLE, 0,0, 850, 30
CONTROL "",390,"TxBrowse",WS_BORDER | WS_VSCROLL | WS_TABSTOP,10,150,830,300
LTEXT "",4001,40,40,50,10
EDITTEXT 397,100,40,160,10
LTEXT "Client",-1,40,55,50,10
EDITTEXT 398,100,55,160,10
LTEXT "Writer",-1,40,70,50,10
EDITTEXT 399,100,70,160,10
LTEXT "Tag #",-1,300,40,40,10
EDITTEXT 400,350,40,80,10
LTEXT "Home ",-1,300,55,40,10
EDITTEXT 401,350,55,80,10
LTEXT "Business",-1,300,70,39,10
EDITTEXT 402,350,70,80,10
LTEXT "Status",-1,470,40,40,10
EDITTEXT 412,520,40,20,10
CONTROL "Complete ?",413,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,470,55,50,10
LTEXT "Parts",-1,40,100,50,10
EDITTEXT 403,100,100,60,10,ES_RIGHT
LTEXT "Labor",-1,40,115,50,10
EDITTEXT 404,100,115,60,10,ES_RIGHT
LTEXT "Sublets",-1,40,130,50,10
EDITTEXT 405,100,130,60,10,ES_RIGHT
LTEXT "Supplies",-1,200,100,50,10
EDITTEXT 406,260,100,60,10,ES_RIGHT
LTEXT "Environment",-1,200,115,50,10
EDITTEXT 407,260,115,60,10,ES_RIGHT
LTEXT "",801,200,130,50,10
EDITTEXT 408,260,130,60,10,ES_RIGHT
LTEXT "Tax",-1,360,100,50,10
EDITTEXT 409,420,100,60,10,ES_RIGHT
LTEXT "Total",-1,360,115,50,10
EDITTEXT 410,420,115,60,10,ES_RIGHT
LTEXT "Deposits",-1,360,130,50,10
EDITTEXT 411,420,130,60,10,ES_RIGHT
LTEXT "Estimate",-1,520,100,50,10
EDITTEXT 415,580,100,60,10,ES_RIGHT
LTEXT "Due Out",-1,520,130,50,10
EDITTEXT 414,580,130,150,10
}
1) I define the dialog. The sizing is for a widescreen monitor
2) My first control is a button bar that will be redefined in the FWH code
3) My second control is an xbrowse which occupies the lower half of the dialog
4) The rest are labels and text entries assigned to the fields in the database in the FWH code
5) The first digit ( number ) is the resource ID, except for LTEXT where a -1 is used to designate the label in position 1 is to be used.
6) The last 4 digits are for position: Starting column, starting row, width, height. Because I want all controls to have the same height, the last number should be the same, except for dropdowns where you will specify how far down you want the list to display.
7) It becomes very easy to space. I can either use the same starting column if I want controls to all match up vertically, or if I have various size controls, I simply add values. For example, If I have a label at column 10, and it's width is 30, the end is at 40. I add 10, and put my text box starting at 50. If it is 80 wide, that puts the end at 130. Now I want 20 between different field gets, so the next label starts at 150.

I increment all rows by 15. So the second location number, if I start at 10, would be 10, then 25, then 40, then 55, then 70 etc. If the field height is 10, then the spacing between all fields vertically will always look consistent.
9) In some cases you see a LTEXT with no label, and a number instead of -1, ie. LTEXT "",801,200,130,50,10 This becomes a dynamic label. The ID is 801, and you put it's value into your FWH code. Most text may be static ( -1 ) but sometimes you want labels to change according to values in the data. Also, it has other benefits. My software can be used in several different settings, and certain keywords need to change depending on who uses it. So, I have a definition table for those values that is set in public variables on startup. You could also use this concept to support different languages. Each label can be assigned a resource ID number in the .rc file, and then on startup you can assign text values to each.
This may seem confusing at first, but once you understand it, and use it a few times, it becomes very fast. I start with a simple template for the dialog, paste it into the editor, and then fill it in according to my needs.
Once I started doing this, I found that the resource editors often look good, but can be a few pixels off in alignment. Visually spacing may look OK, but it varies and people will notice that.
With all of this said, it would be nice to have resizable dialogs but once wrapping comes into play it becomes difficult to look clean. Also, business clients know where a field should be, and if it moves because someone changes the screen, they get upset. Also, with comprehensive data screens, allowing fields to wrap will soon push displays off the screen. I see the examples posted, but they are all of screens with few fields and limited data input. That is fine for a popup, but not for comprehensive data entry that my clients are seeking.
I hope this is informative.