You can create a multi-line edit box with Win32 quite easily:
RECT R;
GetClientRect(Hw,&R); // to fill the owner window with the edit box
EditHw=CreateWindowEx(0,"EDIT","",
WS_CHILD|ES_MULTILINE|ES_WANTRETURN|ES_AUTOHSCROLL|ES_AUTOVSCROLL|WS_HSCROLL|WS_VSCROLL,
0,0,R.right-R.left,R.bottom-R.top,Hw,0,0,0);
ShowWindow(EditHw,SW_SHOW);
This will provide most normal text editing functions by default.
You can get the text into a std::string like this:
int Ln=SendMessage(EditHw,WM_GETTEXTLENGTH,0,0);
std::vector<char> V(Ln+1);
SendMessage(EditHw,WM_GETTEXT,Ln+1,LPARAM(&(V[0])));
std::string S(V.begin(),V.end()-1);
// S now contains the text from the edit box
or set the text like this:
std::string S="This is some text";
SendMessage(EditHw,EM_REPLACESEL,WPARAM(false),LPARAM(S.c_str()));
There are a vast amount of other operations you can do - see the MSDN docs on "Working with edit boxes" for more details or post back if you have specific questions.