2010-05-14 84 views
1

我有一個要求保存圖片關閉屏幕。我已經使用QGLwidget :: grabframebuffer來完成這件事。雖然它在MAC上正常工作,但它在Windows 7上失敗並出現「QGLWidget :: makecurrent():GetDC()失敗。窗口句柄無效」。在此過程中只會創建一個opengl上下文。但我觀察到,如果我將QGLWidget添加到主窗口,我可以保存圖片。我不需要在MAC上做這件事來得到照片。 我不確定會出現什麼問題。QGLWidget :: makecurrent():GetDC()失敗。無效窗口句柄

謝謝!!

回答

1

這是因爲在MacOS上,OpenGL上下文總是附加到多窗口應用程序的根窗口。 (這是不可見與可可,但它是與Agl/Cgl) 在Windows上,您可以創建與任何窗口(有標誌彈出窗口,孩子和我忘了其他)的上下文,然後綁定到任何窗口與MakeCurrent。希望它能夠正常工作,您只需確保在整個應用程序中只有一個線程和一個上下文。規範另有說明,但實際上它從來沒有工作。 (雖然你可能不會看到它在一個小應用程序,只是看到雷斯隨機崩潰),

也,我不知道在QT如何捕捉framebuffer的作品,readpixels或與可怕的GDI副本黑客,如果它是最新的,那麼它不起作用是正常的,它只能在屏幕表面上完成。