RichEdit 追加 RTF

下面实现追加RTF 到 RichEdit 的功能
其本质是:EM_STREAMIN 消息,详细查看 MSDN
//
--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- DWORD CALLBACK EditStreamCallback( DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb ) { DWORD result = 0x0000; try { *pcb = ((TStream*)dwCookie)->Read(pbBuff, cb); return result; } catch (Exception& ex) { result = 0xffff; return result; } } void RTFInsertStream(TRichEdit* richEdit,TStream* stream) { richEdit->Lines->BeginUpdate(); try { EDITSTREAM editStream = {0}; editStream.dwCookie = (DWORD)stream; editStream.dwError = 0x0000; editStream.pfnCallback = EditStreamCallback; richEdit->Perform(EM_STREAMIN, SFF_SELECTION | SF_RTF | SFF_PLAINRTF,LPARAM(&editStream)); richEdit->Lines->EndUpdate(); if (editStream.dwError != 0x0000) { throw Exception("RTFInsertStream: Error inserting stream"); } } catch (Exception& ex) { richEdit->Lines->EndUpdate(); throw Exception("RTFInsertStream: Error inserting stream"); } } __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // TMemoryStream* mmstream = new TMemoryStream(); RichEdit2->Lines->SaveToStream(mmstream); mmstream->Position = 0; RTFInsertStream(RichEdit1,mmstream); delete mmstream; mmstream = NULL; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TStringStream* stringStream = new TStringStream("");
    RichEdit2->Lines->SaveToStream(stringStream);
    stringStream->Position = 0;
    RTFInsertStream(RichEdit1,stringStream);
}

 效果图

转载于:https://www.cnblogs.com/songr/p/5733344.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值