来自 CWnd 的 ReleaseDC 覆盖来自 winuser 的 ReleaseDC

Posted

技术标签:

【中文标题】来自 CWnd 的 ReleaseDC 覆盖来自 winuser 的 ReleaseDC【英文标题】:ReleaseDC from CWnd overrides ReleaseDC from winuser 【发布时间】:2015-12-31 03:19:21 【问题描述】:

我创建了一个简单的应用程序来将 opengl 与 MFC 结合使用。问题是我有以下代码

ReleaseDC(m_hWnd,m_hDC);

根据https://msdn.microsoft.com/en-us/library/windows/desktop/dd162920(v=vs.85).aspx,这似乎是正确的

即使智能感知也告诉我我选择了正确的功能

问题是,一旦我键入函数 ReleaseDC,编译器就会自动查找此处引用的 CWnd::ReleaseDC https://msdn.microsoft.com/en-us/library/ek0dh9wd.aspx。显然这给了我一个编译错误。我对mfc了解不多,欢迎任何帮助。

我正在使用 Visual Studio 2015 更新 1。

【问题讨论】:

您也可以查找CClientDC dc(this);,它是GetDC 的MFC 包装器,它具有自动清理功能 【参考方案1】:

您可能从 CWnd 派生类型的成员函数内部调用 ReleaseDC(m_hWnd,m_hDC);,它声明了成员函数 ReleaseDC

要调用全局命名空间ReleaseDC,您必须对其进行适当的限定:

::ReleaseDC(m_hWnd,m_hDC);

【讨论】:

以上是关于来自 CWnd 的 ReleaseDC 覆盖来自 winuser 的 ReleaseDC的主要内容,如果未能解决你的问题,请参考以下文章

将来自 karma-coverage 的 istanbul 测试覆盖率与来自其他来源的覆盖率合并

方法不会覆盖或实现来自超类型@Override 的方法

如何覆盖填充:0;来自萨斯?

来自命令行的 Xcode 代码覆盖率

来自 C# 的 mingw DLL:为啥我必须覆盖新/删除?

继承/覆盖来自不同外部文件的现有 CSS 规则