I am curious: Can you post a working example of such a dialog?
I have been experimenting with this idea, not in C, though - is the attached example more or less performing what you want to achieve?
GuiMenu equ @File, &Open, &Save, -, E&xit, @Edit, Undo, Copy, Paste
include \masm32\MasmBasic\Res\MbGui.asm
; attributes x, y, w and h expressed as 1/1000 of width resp height
GuiControl Ctrl1, "edit", w 400, h 200, text "first edit"
GuiControl Ctrl2, "edit", x 400, w 400, h 400, text "second edit"
GuiControl Ctrl3, "edit", x 800, w 200, h 600, text "third edit"
GuiControl Ctrl4, "static", y 200, w 400, h 800, text "static"
GuiControl Ctrl5, "listbox", x 400, y 400, w 400, h 600, text "listbox"
GuiControl Ctrl6, "button", x 1000-80, y 1000-30, w 0+80, h 0+30, text "button" ; fixed size button
StringToArray cfm$("This\nis\na\nlistbox"), my$()
SetListbox my$()
Event Message
SetWin$ hCtrl4=Cat$(fTime$(0)+Str$(", %4f hours since the last boot", Timer/3600000))
GuiEnd