text appear over a sprite:
dbSprite ( ID, 5, 5, img );
dbHideSprite ( ID );
dbPasteSprite ( ID, dbSpriteX ( ID ), dbSpriteY ( ID ) );
dbText ( 6, 6, "This text is over the sprite." );
resizing box:
you can make a little sprite ( can be hidden ) at the edges of the box, so check collision between it and the mouse, if they are colliding and the mouse is clicked, sclae the box sprite and the text appearing position according to the new size
arrow keys? you mean like, scroll up and down? well i have made a simple box before and i did this:
first, i stored the text messages in a 2d array:
char MESSAGES[200][500]; //200 messages, each one contains 500 chars
then, i made something like a view area of the box :
int viewArea[numLinesInBox];
so, an int array containing the number of lines in a box, and in each element of the array, you store a line number, for example, the number of lines = 10, so you can view 10 lines at once, and you want to view lines number 35-45, viewArea should be { 35, 36, 37 .... 45 } so you can show messages in a for loop:
for ( int i = viewArea[0]; i < viewArea[numLinesInBox]; i++ )
dbText ( pos, pos, MESSAGES[i] );
as for the links in chat, im not pretty sure, but i think you can make a hidden sprite over a specific area of the box ( the link place ), and check mouse clicks and collision between mouse and that sprite, so like, you store in a structure or something some variables like the link position and the line it is at, and then re-position the boxes when the chat scrolls
hope that helps