我使用以下代码在程序开头加载png图标文件:
if (NULL == m_pImage) {
Bitmap *pImage = new Bitmap(T2W(filePath));
if (size == kSmallIconSize) {
m_pImage = static_cast<Bitmap *>(pImage->GetThumbnailImage(size, size));
} else {
m_pImage = pImage;
}
if (m_pImage->GetLastStatus() == Ok)
m_resID = index;
else
return FALSE;
}
return TRUE;
然后在某些事件中,我尝试用
打开同一个文件CFile file;
if (TRUE == file.Open(filePath, CFile::modeRead))
但无法打开文件,GetLastError()
返回32,这意味着
ERROR_SHARING_VIOLATION
我该如何解决这个问题?
更新
为了确保导致错误的“Bitmap加载”代码,我在此之后立即尝试了CFile :: Open并确认了它。
为什么Bitmap::Bitmap(WCHAR *pFilePath)
不能共享文件或者在加载后让它继续运行..?
答案 0 :(得分:1)
答案 1 :(得分:1)
您的pImage
变量尚未取消分配,因此该文件仍在使用中。
尝试使用CFile::shareDenyNone
标志打开文件:
if (TRUE == file.Open(filePath, CFile::modeRead | CFile::shareDenyNone))