高分求~~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);
}