用TCppWebServer做聊天记录显示的问题
现在正在做一个即时通讯软件,就是类似于QQ,Skype,阿里旺旺一样的东东。用于显示接收或者发送的消息我开始是用的TRichEdit控件显示的,但有时候显示是正常的有时候又是乱的,客户反映很强烈。研究了一下Skype和阿里旺旺的客户端,发现它们是用的一个叫做“Internet Explorer_Server”的控件(用Spy++查看的),所以也想做一个类似的,在网上搜了一下,一直没弄明白“Internet Explorer_Server”到底是个什么东西。有人说可以用TCppWebServer控件来显示,用HTML标签来控制字体的大小及颜色。我在网上找了一个方法,可以直接修改TCppWebServer里面的内容,代码后面附上。
//更改TCppWebBrowser显示内容void __fastcall TForm1::SetHtml( TCppWebBrowser *WebBrowser,AnsiString Html ){ try { if (WebBrowser->Document == NULL) { return; } HGLOBAL hHTMLText = GlobalAlloc(GPTR, Html.Length() + 1); if (0 == hHTMLText) { ShowMessage( "GlobalAlloc Error" ); return; } CopyMemory(hHTMLText, Html.c_str(), Html.Length()); IStream *Stream = NULL; IPersistStreamInit *psi = NULL; try { OleCheck(CreateStreamOnHGlobal(hHTMLText, true, &Stream)); OleCheck(WebBrowser->Document->QueryInterface(__uuidof(IPersistStreamInit), (void **)&psi)); OleCheck(psi->InitNew()); OleCheck(psi->Load(Stream)); } catch (...) { delete Stream; delete psi; } delete psi; delete Stream; } catch (...) { }}