在RICHEDIT中插入图片

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

怎样在RICHEDIT中插入图片

void __fastcall InsertBmpToRich(TRichEdit *re, WideString wstrBmpFile)

{

IRichEditOle *RichOle;

SendMessage(re->Handle, EM_GETOLEINTERFACE, 0, int(&RichOle));

ILockBytes *FLockBytes;

CreateILockBytesOnHGlobal(0,1,&FLockBytes);

IStorage *FStorage;

StgCreateDocfileOnILockBytes(FLockBytes,STGM_SHARE_EXCLUSIVE |

STGM_CREATE | STGM_READWRITE,0,&FStorage);

TFormatEtc FormatEtc;

FormatEtc.cfFormat=0;

FormatEtc.ptd=NULL;

FormatEtc.dwAspect=DVASPECT_CONTENT;

FormatEtc.lindex=-1;

FormatEtc.tymed=TYMED_NULL;

IOleObject *FOle;

OleCreateFromFile(GUID_NULL, wstrBmpFile, ::IID_IOleObject,

0, &FormatEtc, NULL, FStorage, (void**)&FOle);

OleSetContainedObject(FOle, true);

REOBJECT ReObject;

ZeroMemory(&ReObject, sizeof(REOBJECT));

ReObject.cbStruct=sizeof(REOBJECT);

CLSID xt;

FOle->GetUserClassID(&xt);

ReObject.clsid=xt;

ReObject.cp=REO_CP_SELECTION;

ReObject.dvaspect=DVASPECT_CONTENT;

ReObject.dwFlags=REO_STATIC | REO_BELOWBASELINE;

ReObject.dwUser=0;

ReObject.poleobj=FOle;

IOleClientSite *FClientSite;

RichOle->GetClientSite(&FClientSite);

ReObject.polesite=FClientSite;

ReObject.pstg=FStorage;

ReObject.sizel.cx=0;

ReObject.sizel.cy=0;

RichOle->InsertObject(&ReObject);

}

//调用方法:

InsertBmpToRich(RichEdit1, WideString("D:\\source\\Linux_Image\\header-projects.png"));

//或者用RichView

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航