一個實驗性質的繪圖程式,從bmp中讀取到CImage,修改后再保存回去。
class CMFCApplication7Doc : public CDocument
{
//...略
public:
CImage m_image;
//...略
};
// CMFCApplication7Doc 序列化
void CMFCApplication7Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存盤代碼
m_image.Save(ar.m_strFileName);
//也試過寫成 m_image.Save(ar.m_strFileName,Gdiplus::ImageFormatBMP);
}
else
{
// TODO: 在此添加加載代碼
m_image.Load(ar.m_strFileName);
}
}
沒有改動doc的其他部分。
運行后可以正確地從bmp中讀取并顯示到view中進行修改,
但是保存的時候,形成的檔案永遠是0位元組空檔案。無論是直接覆寫還是另存。
在save處設斷點追蹤,
ar.m_strFileName 的值為 L"C:\\Users\\soft666\\Desktop\\C3.bmp"
m_image的屬性中
m_nWidth 1152
m_nHeight 648
可見路徑沒有問題,保存的m_image也不是空的Cimage
rc里IDR_MAINFRAME的值也設定成了
MFCApplication7\n\nMFCApplication7\n.bmp\n.bmp\nMFCApplication7.Document\nMFCApplication7.Document
應該是匹配的吧。
所以問題出在哪?
uj5u.com熱心網友回復:
save的回傳值是e_fail,在追蹤進去是win32error(7)似乎是權限問題?但是以管理員權限運行不解決問題
uj5u.com熱心網友回復:
ar.m_strFileName 沒關閉換 名 save
uj5u.com熱心網友回復:
感謝樓上,已經解決轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/65449.html
標籤:基礎類
上一篇:mscomm控制元件接收資料問題
