我的IPicture已经取到了图,现在我想用它的SaveAsFile方法把图像保存到内存的二进制流中,再存入数据库,可是到了调用pIPicture->SaveAsFile(pStream,TRUE,&lLength);总是报内存错,请问如何正确使用能达到目的。
解决方案 »
- 文件过滤器
- 怎样将字符串添加到access表的对应字段中(vc数据库小问题)
- outlook里面163.com邮箱的发送服务器应该怎么设置?
- 关于spi的问题,高手请帮忙
- test too...
- 为什么我在调用GetDefaultPrinter时会出error C2065: 'GetDefaultPrinter' : undeclared identifier
- 在winnt,win2000下,能否编程实现隐藏本进程,不在任务列表中显示。
- 关于FTP的编程编程问题
- sql查询的问题
- 如何杀死一个VxD
- 关于串口通讯方面遇到的问题(弄了一个下午了啊还没有搞定)!
- 用VC发邮件时遇到一些基础的问题请教
{
if(hbmp==NULL || sIconFileName==NULL)
return;
//warning: this code snippet is not bullet proof.
//do error check by yourself [masterz]
PICTDESC picdesc;
picdesc.cbSizeofstruct = sizeof(PICTDESC);
picdesc.picType = PICTYPE_BITMAP ;
picdesc.bmp.hpal = NULL;
picdesc.bmp.hbitmap = hbmp;
IPicture* pPicture=NULL;
OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture);
LPSTREAM pStream;
CreateStreamOnHGlobal(NULL,TRUE,&pStream);
LONG size;
HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size);
char pathbuf[1024];
strcpy(pathbuf,sIconFileName);
CFile iconfile;
iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite);
LARGE_INTEGER li;
li.HighPart =0;
li.LowPart =0;
ULARGE_INTEGER ulnewpos;
pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos);
ULONG uReadCount = 1;
while(uReadCount>0)
{ pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount);
if(uReadCount>0)
iconfile.Write(pathbuf,uReadCount);
}
pStream->Release();
iconfile.Close();
}
public:
........................
operator IPicture*() {
return m_spIPicture;
}
........................
protected:
CComQIPtr<IPicture>m_spIPicture; // ATL smart pointer to IPicture
}问一下我有一个CPicture *pPicture,怎么才能得到他的m_spIPicture变量
去看COleStreamFile
去看COleStreamFile
其实还是先读到IStream* pstm里面了,不过是临时的
CreateStreamOnHGlobal
Read&Write
BOOL CPicture::Load(IStream* pstm)
{
Free();
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 0);
CreateStreamOnHGlobal(hGlobal, TRUE, &m_pStream);
m_pStream = pstm;
HRESULT hr = OleLoadPicture(m_pStream, 0, FALSE,
IID_IPicture, (void**)&m_spIPicture);
m_lSize = ::GlobalSize(hGlobal);
ASSERT(SUCCEEDED(hr) && m_spIPicture); return TRUE;
}
我的代码,图片可以正常显示,但是m_lSize取到的是0,为何,哪有问题吗?我read也是"",失败呀,不知道哪有问题