vc++典型模块大全 --企业通讯模块发图片功能有问题
发表在C语言图书答疑 2010-08-23
是否精华
版块置顶:
vc++典型模块大全 --企业通讯模块发图片功能有问题,发图片不能成功,程序执行到红色的部分就出错了 ,希望能尽快的解决一下,谢谢了 !
下面贴上出错的代码:
BOOL CSendDlg::InsertImage(IRichEditOle *lpRichEditOle,CString &csFileName)
{
IStorage *lpStorage = NULL;        //存储接口
IOleObject *lpOleObject = NULL;    //OLE object
LPLOCKBYTES lpLockBytes = NULL;
IOleClientSite *lpOleClientSite = NULL;
GIFLib::ICGifPtr lpAnimator;
CLSID clsid;
REOBJECT reobject;
HRESULT hr;
if (lpRichEditOle == NULL)
{
return FALSE;
}

hr = ::CoInitialize(NULL);
if (FAILED(hr))
{
_com_issue_error(hr);
}
//
[font size=4][font color=#FF0000][strong]hr = lpAnimator.CreateInstance(GIFLib::CLSID_CGif)[/strong];[/font]
[/font] if (FAILED(hr))
{
_com_issue_error(hr);
}
lpRichEditOle->GetClientSite(&lpOleClientSite);
try
{
//获取OLE对象接口
hr = lpAnimator->QueryInterface(IID_IOleObject,(void**)&lpOleObject);
if (FAILED(hr))
{
AfxMessageBox("Error QueryInterface");
}
hr = lpOleObject->GetUserClassID(&clsid);
if (FAILED(hr))
{
AfxMessageBox("Error GetUserClassID");
}
//防止出现错误提示
lpOleObject->SetClientSite(NULL);
lpOleObject->SetClientSite(lpOleClientSite);

hr = ::CreateILockBytesOnHGlobal(NULL,TRUE,&lpLockBytes); //创建LOCKBYTE对象
if (FAILED(hr))
{
AfxThrowOleException(hr);
}
ASSERT(lpLockBytes != NULL);
hr = ::StgCreateDocfileOnILockBytes(lpLockBytes,
STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_READWRITE,
0,&lpStorage);
if (FAILED(hr))
{
VERIFY(lpLockBytes->Release() == 0);
lpLockBytes = NULL;
AfxThrowOleException(hr);
}
ZeroMemory(&reobject,sizeof(REOBJECT));    //初始化一对象
reobject.cbStruct = sizeof(REOBJECT);
reobject.clsid = clsid;
reobject.cp = REO_CP_SELECTION;
reobject.dvaspect = DVASPECT_CONTENT;
reobject.dwFlags = REO_BLANK;
reobject.poleobj = lpOleObject;
reobject.polesite =lpOleClientSite;
reobject.pstg = lpStorage;
hr = lpRichEditOle->InsertObject(&reobject);

hr = lpAnimator->LoadFromFile(csFileName.AllocSysString());

if (FAILED(hr))
{
AfxThrowOleException(hr);
}

RedrawWindow();    //刷新窗体
lpOleClientSite->SaveObject();
OleSetContainedObject(lpOleObject,TRUE);
}
catch (CException* e)
{
e->Delete();
}
lpAnimator->Release();
lpStorage->Release();
return TRUE;
}
分享到:
精彩评论 1
liangshui
学分:0 LV1
2010-08-23
沙发
这个程序中有一个Activex控件你注册一下就可以了,这个控件是用来显示GIF动画的
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照