CImage::ReleaseDC()のエラーで困っています。
CImage::ReleaseDC()のエラーで困っています。
ウインドウ上に複数の画像を表示し、それぞれ配置や大きさを
マウスのD&Dで変えられるようなアプリを作っています。
Visual Studio 2005 C++, MFC
画像はCImageクラスのm_ImageへLoadしてあります。
GetDCでハンドルを取得しているので、ReleaseDCにて開放を
行っていますが、そこで下のエラーになります。
[Second Chance Assertion Failed: File c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlimage.h, Line 1217]
何か解決のヒントになる事がありましたら教えてください。
void CImageButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
(前略)
//ウィンドウDC互換Bitmap作成
CBitmap Bmp;
Bmp.CreateCompatibleBitmap(pDC, nWidth, nHeight);
//メモリDC作成
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
//メモリDCにBitmap選択
MemDC.SelectObject(&Bmp);
//メモリDCにストレッチ描画
MemDC.SetStretchBltMode(HALFTONE);
CDC* pImgDC = CDC::FromHandle(pBtnInfo->m_Image.GetDC());
HDC hImgDC = pImgDC->m_hDC;
pBtnInfo->m_Image.StretchBlt(MemDC.m_hDC, 0, 0, nWidth, nHeight, SRCCOPY);
pBtnInfo->m_Image.ReleaseDC();
(中略)
//四角形を描画
CPen focusPen(PS_DOT, nPenWidth, RGB(nR, nG, nB));
CPen* OldPen = MemDC.SelectObject(&focusPen);
MemDC.MoveTo(btnRect.left, btnRect.top);
MemDC.LineTo(btnRect.left, btnRect.bottom);
MemDC.LineTo(btnRect.right, btnRect.bottom);
MemDC.LineTo(btnRect.right, btnRect.top);
MemDC.LineTo(btnRect.left, btnRect.top);
MemDC.SelectObject(OldPen);
//メモリDCからウィンドウDCにビット転送
pDC->BitBlt(0, 0, nWidth, nHeight, &MemDC, 0 ,0, SRCCOPY);
(後略)
お礼
これからは、教えていただいたようにクローズ処理を 常に気にしながらプログラムしたいと思います。 ご返信有難うございました。