首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

高分求~VC++的RichEdit控件编程(非MFC框架)解决方案

2012-03-09 
高分求~~VC++的RichEdit控件编程(非MFC框架)谁能给我一份用底层API写的RichEdit控件,实现能在控件里面插入

高分求~~VC++的RichEdit控件编程(非MFC框架)
谁能给我一份用底层API写的RichEdit控件,实现能在控件里面插入表情图片,就好像一些大厅游戏的聊天功能那样.切记不要用MFC框架,RichEdit控件要用CreateWindowEx来创建的.谢谢啦

[解决办法]
void __fastcall InsertBmpToRich()

IRichEditOle* rich;
SendMessage(hwndChatEdit, EM_GETOLEINTERFACE, 0, int(&rich));

ILockBytes *FLockBytes;
CreateILockBytesOnHGlobal(0,1,&FLockBytes);

IStorage *FStorage;
StgCreateDocfileOnILockBytes(FLockBytes,STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_READWRITE,0,&FStorage);

FORMATETC FormatEtc;
FormatEtc.cfFormat=0;
FormatEtc.ptd=NULL;
FormatEtc.dwAspect=DVASPECT_CONTENT;
FormatEtc.lindex=-1;
FormatEtc.tymed=TYMED_NULL;

IOleObject *FOle;
OleCreateFromFile(GUID_NULL,L"G:\\www\\FTP\\rich\\Client\\kid.bmp",::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;
rich->GetClientSite(&FClientSite);
ReObject.polesite=FClientSite;
ReObject.pstg=FStorage;
ReObject.sizel.cx=0;
ReObject.sizel.cy=0;

rich->InsertObject(&ReObject);
}

热点排行