我在VC2005里用GDI+做了个图片格式转换,转完我想删除源文件,但删不掉。第一次用GDI+,高手给看看,谢谢! ULONG_PTR gdiplusToken;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL); WCHAR* pImagePath = L"C:\\123.bmp";
Bitmap* pimage = new Bitmap(pImagePath);
SaveImageToFile(pimage, szFileName, quality); GdiplusShutdown(gdiplusToken); remove("c:\\123.bmp");我想删除123.bmp这个文件,提示正在使用,我new的这个Bitmap怎么释放呢? delete pimage;不行,会引起程序崩溃。我把:Bitmap* pimage = new Bitmap(pImagePath);
换成:Bitmap pimage(pImagePath);析构时Image类的析构函数又会引起程序崩溃。inline
Image::~Image()
{
DllExports::GdipDisposeImage(nativeImage);
}
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL); WCHAR* pImagePath = L"C:\\123.bmp";
Bitmap* pimage = new Bitmap(pImagePath);
SaveImageToFile(pimage, szFileName, quality); GdiplusShutdown(gdiplusToken); remove("c:\\123.bmp");我想删除123.bmp这个文件,提示正在使用,我new的这个Bitmap怎么释放呢? delete pimage;不行,会引起程序崩溃。我把:Bitmap* pimage = new Bitmap(pImagePath);
换成:Bitmap pimage(pImagePath);析构时Image类的析构函数又会引起程序崩溃。inline
Image::~Image()
{
DllExports::GdipDisposeImage(nativeImage);
}
=======================================================
FreeLaxy, your backup.
=======================================================
能不能再说的详细点,不熟悉GDI,放到remove()后面也是不行啊。我主要是想把刚用过的BMP图片删除,我发现不关掉程序就不让删。
果然,删掉了!
我以前把delete pimage放到GdiplusShutdown(gdiplusToken)之后了。http://topic.csdn.net/u/20100913/14/7a2f10e4-3cd0-4e0b-9135-74b27a8d648a.html
这里还有一个此问题的提问,你去回复一下,我结了把分一并送上!
谢谢!
2、我用同样的代码,你把delete pimage放在GdiplusShutdown(gdiplusToken)之前,一样崩溃
怎么回事啊?
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
Bitmap*g_btm = ::new Bitmap(_T("D:\\work\\workTabs_2.bmp"));
delete g_btm;
GdiplusShutdown(m_gdiplusToken);