vector问题。 捆扰我许久的问题,多文档保存所有图片句柄的问题。 比较急,在线等。
在下面这个函数中我想用Vector来保存我多文档保存打开所有图片的句柄,但是这里只能保存一个句柄,现在我想把所有打开的图片句柄都保存,请问在这个函数中怎么修改呢???
BOOL CDIBDisplayDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
CFile file;
CFileException fe;
if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
{
ReportSaveLoadException(lpszPathName, &fe,FALSE,
AFX_IDP_FAILED_TO_OPEN_DOC);
return FALSE;
}
DeleteContents();
BeginWaitCursor();
if(m_pDibImage != NULL)
{
delete m_pDibImage;
m_pDibImage = NULL;
}
m_pDibImage = new CDibImage;
TRY
{
m_hDIB = m_pDibImage-> ReadDIBFile(file);
ImgHandle.push_back(m_hDIB);//保存图片句柄
}
CATCH (CFileException, eLoad)
{
file.Abort();
EndWaitCursor();
ReportSaveLoadException(lpszPathName, eLoad,FALSE,
AFX_IDP_FAILED_TO_OPEN_DOC);
m_hDIB = NULL;
if(m_pDibImage != NULL)
{
delete m_pDibImage;
m_pDibImage = NULL;
}
return FALSE;
}
END_CATCH
InitDIBData();
EndWaitCursor();
// 判断读取文件是否成功
if (m_hDIB == NULL)
{
CString strMsg;
strMsg = "读取图像时出错!可能是不支持该类型的图像文件! ";
MessageBox(NULL, strMsg, "系统提示 ", MB_ICONINFORMATION | MB_OK);
if(m_pDibImage != NULL)
{
delete m_pDibImage;
m_pDibImage = NULL;
}
return FALSE;
}
SetPathName(lpszPathName);// 设置文件名称
SetModifiedFlag(FALSE);// 初始化胀标记为FALSE
return TRUE;
}
[解决办法]
是不是你每次ImgHandle。push_back前都在某个函数里面把他 clear了啊,那就只有一个了
[解决办法]
我给你回信了,看看你的信箱