2013-11-27 81 views
0

所以,我不斷收到一個斷言失敗:斷言失敗的GetDC()(使用MFC)

_AFXWIN_INLINE CDC* CWnd::GetDC() 
    { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); } 

而且我檢查調用棧和調用該方法之前,上述方法是:

CDC *pDC = GetDC(); 

我不確定這有什麼問題,但我想要一些幫助。謝謝!

+0

您可以發佈更多的上下文嗎?看起來像'm_hWnd'很糟糕,但沒有看到它是如何創建的,這只是一個猜測。 –

+0

它已經有一段時間了,但如果我沒有記錯的話,如果你在OnPaint中獲得DC,你需要創建一個CPaintDC。但是,當你打電話給GetDC時需要更多的上下文。 – Laurijssen

+0

@Servé'CPaintDC'是一種方便,而不是必需的。永遠不需要應用程序來實例化一個'CPaintDC'。 – IInspectable

回答

1

如果你得到這個斷言,你可以使用CWNd :: GetDC函數而不需要創建一個窗口。或者窗戶已經被毀壞了。