首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC GetDC()断言失败-“不是窗口”

MFC GetDC()断言失败-“不是窗口”
EN

Stack Overflow用户
提问于 2018-06-13 22:25:18
回答 1查看 398关注 0票数 0

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

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

导致断言失败的行:

代码语言:javascript
复制
CDC *pDC = plotScreen.GetDC();

plotScreen的创建:

代码语言:javascript
复制
plotScreen.Create("Gamma Playback", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | DT_CENTER, plotRect, thisParent, NULL);

断言失败:

代码语言:javascript
复制
ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 00:55:47

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50839685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档