your easiest way is to use sprites, you could either create an image/sprite of every button, menu, etc. (which is not cool.), or create images that could represent 4 corners or a dialog/button, 2(or 4) that could represent the border, and 1 or more for the background, not the best way to do it but it works
//example: make a function that does it all in 1 call!
void DisplayDialog ( int x, int y, int width, int height, char* text )
{
//psuedo
dbSprite to show top-left corner at x,y and it's size is not changed
dbSprite to show top-right corner at (x+topleftcornersize+width),y and it's size is not changed
dbSprite to show the other 2, same way
dbSprite to show top border at x+topleftcornersize,y and it's size is equal to width
dbSprite to show other borders, same way
finally dbSprite for the background, depends on the way you made it, could be 1 dbSprite call or more
dbText to print text at x+topleftcornersize,y+topleftcornersize or a little bit more if you don't want it to stick with the border
}
also - to display text over sprites, they need to be used in a special way, instead of dbSprite above, use this, or anything similar:
void dbSpriteEx ( int ID, int x, int y, int img )
{
dbSprite ( ID, x, y, img );
dbHideSprite ( ID );
dbPasteSprite ( ID, x, y );
}
not pretty sure about parameters above, sorry, you can check them to make sure