March 12th, 2014, 09:02 PM
MFC CDC HDC issue
I am a bit of a noob so go easy here
I am creating an MFC app with a main window class CDataDlg.
The .h file has public method declaration:
static void CDataDlg::toScreen();
This is a simple routine to dump some buffered context to screen via BitBlt:
CDC* pDC = GetDC();
BitBlt(pDC->GetSafeHdc(),0,0,width,height, hdcMem, 0, 0, SRCCOPY);
The idea is to draw a picture directly on main window background.
This worked great, so long as the method was not static. Of course, once I made it static (as explained above), I lost the ability to call GetDC().
I tried the following:
hWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
CWnd* mycw = FromHandlePermanent(hWnd);
CDC* pDC = mycw->GetDC();
But that fails miserably because mycw ends up NULL. In general, this chain of seeking a drawing context is very fishy to me. Any recommendations?
March 13th, 2014, 03:07 AM
Re: MFC CDC HDC issue
Never mind. toScreen() was being spun off as a new worker thread. It somehow worked with drawing on CDC until I made it static but it should not have worked at all. Moved it into main UI thread and it all works.
Click Here to Expand Forum to Full Width
This is a Codeguru.com survey!