Figure 1: Definitions of classes COpenGLCtrl and COpenGLCtrls
// FIle OGLCtrl.h #include "gl\gl.h" // OpenGL standard header #include "gl\glu.h" // OpenGL Utility Library #include "gl\glaux.h" // OpenGL Auxiliary Library // Class for single OpenGL window class COpenGLCtrl : public CWnd { protected: HGLRC m_hRC; // Rendering Context HDC m_hDC; // Device Context public: COpenGLCtrl(); // Register "MyOpenGL" window class static BOOL RegisterOpenGLWindowClass(); protected: // Initialization and uninitialization virtual void InitializeOpenGLWindow(); virtual void UninitializeOpenGLWindow(); // Set the Pixel format virtual void SetupPixelFormat(HDC hDC); virtual void CustomizePixelFormat(PIXELFORMATDESCRIPTOR * pfd){} // Handle WM_SIZE and WM_PAINT virtual void RedrawOpenGLWindow(); virtual void ResizeOpenGLWindow(int cx, int cy); // Protocol: Redefine these to render your scene virtual void OnCreateRC(); virtual void OnViewport( int cx, int cy ); virtual void OnProjection(GLdouble AspectRatio); virtual void OnViewing(); virtual void OnRender(); virtual void OnDestroyRC(); protected: // Overridden MFC virtual functions virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void PreSubclassWindow(); // MFC message handlers afx_msg void OnDestroy(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); //..... }; // Class for many OpenGL windows class COpenGLCtrls : public COpenGLCtrl { public: COpenGLCtrls(); protected: virtual void InitializeOpenGLWindow(); virtual void UninitializeOpenGLWindow(); virtual void RedrawOpenGLWindow(); virtual void ResizeOpenGLWindow(int cx, int cy); // Use these to call OpenGL functions outside protocol virtual void BeginOpenGLDrawing(); virtual void EndOpenGLDrawing(); }; // Function that checks OpenGL errors BOOL GetOpenGLError(); /* End of File */