2009-07-09 48 views
1

我有一个OpenGL窗口作为主窗口的子窗口的应用程序。Windows没有绘制上面的OpenGL窗口

当我在OpenGL窗口上方显示一个对话框时,它不会被绘制。这就像它没有得到WM_PAINT消息。如果我可以猜测对话框的标题栏位置,我可以拖动它,它仍然可以响应。

我意识到这可能是一个模糊的问题,但我想知道如果其他人之前是否看到过这种行为并知道解决方案?

我想知道像素格式描述符是否会有所作为 - 我有PFD_DRAW_TO_WINDOW,但更改为PDF_DRAW_TO_BITMAP没有任何区别。我不确定还有什么我应该看的?

回答

1

错误。应该给出所有的细节。我在Mac OS X上使用Parallels在虚拟机中运行Windows。我从Parallels 3升级到4,现在一切正常。我怀疑Parallels视频驱动程序问题。

感谢所有回答了建议的人。

0

你的opengl窗口是不断渲染的。 3D硬件可能会简单地渲染为覆盖您的对话框透视图。如果将对话框放置在与主窗口重叠的位置,可以看到其中的一些内容吗?

尝试暂停呈现到主显示中以查看它是否会影响结果。

您还需要确保你的窗口风格保证了结果被剪辑...

cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN ; 

您应该检查虽然这MSDN文章中提到的所有项目,因为它涵盖了很多的基本知识正确地获取opengl渲染窗口。

http://msdn.microsoft.com/en-us/library/ms970745.aspx

+0

谢谢。一个有用的链接。 – 2009-09-06 16:11:35

0

您可能需要切换覆盖掉。可以通过强制备份缓冲区呈现方法来进行复制而不是交换。

使用wglChoosePixelFormatARB和参数应该是

WGL_SWAP_METHOD_ARB与价值WGL_SWAP_COPY_ARB

0

这可能看起来很蠢,但你确定你的OpenGL窗口没有被标记“层次最高的”?

对话框是否也消失在窗口的边界之后或OpenGL渲染矩形的后面?

+0

不,它不是最顶层的,是的,它只是OpenGL渲染矩形是问题,而不是整个窗口。 (但是,请参阅我的解答!) – 2009-09-06 16:10:49