I don't think that's what @djhanson is looking for. They want to control where the wrap occurs, rather than force the wrap with embedded CR/LFs.
For example:
caption("The quick brown fox jumped over the lazy dog. Hello world hello world");
produces this:
You could use a text box to control the wrap. Not quite the same as caption() though.
nw = new window("Caption",
tb = textbox("The quick brown fox jumped over the lazy dog. Hello world hello world")
);
tb << set wrap(500);
wait(4);
nw << close window();