假設我創建的內存DC處理位圖,並將其返回(Windows)何時刪除對象和設備上下文?
HBITMAP paint (HWND hwnd)
{
HDC windc = ::GetWindowDC(hwnd);
HDC memdc = ::CreateCompatibleDC(windc);
HBITMAP bitmap = ::CreateCompatibleBitmap(windc,100,100); //Don't bother with the height and width
::SelectObject(memdc,(HGDIOBJ)bitmap);
/* DeleteDC(windc) here? */
//do the painting
//...
//painting done
/*DeleteDC(memdc) here? */
return bitmap;
/* Code does not reach here */
/* So where do I put DeleteObject(bitmap)? */
}
我的問題是在哪裏以及何時刪除位圖的功能?另外,刪除windc會影響memdc嗎?或memdc是純粹創建的(並且不包含「指向」windc的信息)?如果是這樣,那麼在創建位圖和memdc後(在任何繪畫之前)刪除windc是合適的。
重要 - 呼叫ReleaseDC爲以GetWindowDC相應的呼叫。 (在你的代碼中,你正在調用DeleteDC)。僅爲您自己創建的DC調用DeleteDC(例如,CreateCompatibleDC)。 – selbie