Win32 CTRL-ALT-DEL - >任务管理器以某种方式杀死OpenGL

时间:2015-10-06 04:22:18

标签: c winapi opengl sdl-2

WINAPI:我有一个简单的Win32应用程序和一个OpenGL上下文。

  • 原因)如果我执行CTRL-ALT-DELETE并单击任务管理器......
  • EFFECT)应用程序窗口为黑色,直到调整大小。 OpenGL不会渲染。

通过大量的实验,我在很大程度上克服了这种巨大的烦恼...

  • 不可思议的部分解决方案---我作弊调整窗口大小没有重绘,"大多数"欺骗Windows

代码:

case WM_SYNCPAINT:
    SetWindowPos (hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOOWNERZORDER | 
                        SWP_NOMOVE | SWP_NOREDRAW | SWP_NOSIZE |  SWP_HIDEWINDOW);
    RedrawWindow (hwnd, NULL, 0, RDW_NOERASE );
    SetWindowPos (hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOOWNERZORDER |
                         SWP_NOMOVE | SWP_NOSIZE |  SWP_SHOWWINDOW );
    break;

D)然而,它仍然是一个次优的解决方案,有一些轻微的副作用。

  • 问题1:为什么我的OpenGL被杀死,重新创建上下文甚至无法正常工作。
  • 问题2:必须有一种真正的方法来解决这个问题而不会隐藏窗口并再次显示它会导致一些重新涂抹的副作用......是否有人有解决方案。

虽然没有直接关系,但SDL2也存在这个问题,我经常会对他们的代码进行交叉检查,看看这样的winapi消息/绘图问题,而且他们的代码库没有解决方案,我看到这个问题发布在互联网用于其他东西,如Glut等。这似乎是一个问题,即使在普通的OpenGL工具包等中也会出现问题。

0 个答案:

没有答案