]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/glcanvas.h
Don't create multiple parent-less top level frames in layout sample.
[wxWidgets.git] / include / wx / msw / glcanvas.h
index 83362b016709f53e2a6c1dc17ae7c7f1e4ad9a8c..ba8388d35df8c3bf2a6bca1f19806450bd0887e6 100644 (file)
@@ -28,7 +28,7 @@ public:
     wxGLContext(wxGLCanvas *win, const wxGLContext* other = NULL);
     virtual ~wxGLContext();
 
-    virtual void SetCurrent(const wxGLCanvas& win) const;
+    virtual bool SetCurrent(const wxGLCanvas& win) const;
 
     HGLRC GetGLRC() const { return m_glContext; }
 
@@ -46,6 +46,7 @@ private:
 class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase
 {
 public:
+    wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
     wxGLCanvas(wxWindow *parent,
                wxWindowID id = wxID_ANY,
                const int *attribList = NULL,
@@ -67,7 +68,7 @@ public:
     virtual ~wxGLCanvas();
 
     // implement wxGLCanvasBase methods
-    virtual void SwapBuffers();
+    virtual bool SwapBuffers();
 
 
     // MSW-specific helpers
@@ -133,8 +134,18 @@ protected:
     // common part of all ctors
     void Init();
 
+    // the real window creation function, Create() may reuse it twice as we may
+    // need to create an OpenGL window to query the available extensions and
+    // then potentially delete and recreate it with another pixel format
+    bool CreateWindow(wxWindow *parent,
+                      wxWindowID id = wxID_ANY,
+                      const wxPoint& pos = wxDefaultPosition,
+                      const wxSize& size = wxDefaultSize,
+                      long style = 0,
+                      const wxString& name = wxGLCanvasName);
+
     // set up the pixel format using the given attributes and palette
-    bool DoSetup(const int *attribList);
+    int DoSetup(PIXELFORMATDESCRIPTOR &pfd, const int *attribList);
 
 
     // HDC for this window, we keep it all the time
@@ -146,4 +157,3 @@ private:
 };
 
 #endif // _WX_GLCANVAS_H_
-