MFC GetDC()断言失败 - "不是窗口"

时间:2018-06-13 14:25:18

标签: c++ mfc

目标:在静态控件plotScreen上的子窗口中绘制一个绘图。该图将有时从实时输入数据中提取,因此我绘制到兼容的DC以减少闪烁。

问题:代码正常工作,使用GetActiveWindow()然后GetDC()将绘图绘制到主框架,但我无法让程序将子窗口或静态控件识别为窗口。

导致断言失败的行:

CDC *pDC = plotScreen.GetDC();

创建plotScreen:

plotScreen.Create("Gamma Playback", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | DT_CENTER, plotRect, thisParent, NULL);

断言失败:

ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }

静态是在调用GetDC之前创建的。

编辑:静态已成功创建但已销毁。我尝试使用new在堆上进行分配,但是在我可以在以后的函数中使用它之前它仍然被销毁。

1 个答案:

答案 0 :(得分:0)

解决方案=在该窗口的OnCreate期间获取包含CStatic的窗口的指针。存储在全局变量中。使用此指针获取DC。