]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/glcanvas.cpp
two fixes from Justin Bradford
[wxWidgets.git] / src / msw / glcanvas.cpp
index 5cbfd68cfb17ee727e7007599ec95de1cc4b2f45..f854b48a7ebe581adbb9e341407f09953a9e536f 100644 (file)
@@ -9,7 +9,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "glcanvas.h"
 #endif
 
     #include "wx/settings.h"
     #include "wx/intl.h"
     #include "wx/log.h"
+    #include "wx/app.h"
 #endif
 
 #include "wx/msw/private.h"
 
+// DLL options compatibility check:
+#include "wx/build.h"
+WX_CHECK_BUILD_OPTIONS("wxGL")
+
 #include "wx/glcanvas.h"
 
+/*
+  The following two compiler directives are specific to the Microsoft Visual
+  C++ family of compilers
+
+  Fundementally what they do is instruct the linker to use these two libraries
+  for the resolution of symbols. In essence, this is the equivalent of adding
+  these two libraries to either the Makefile or project file.
+
+  This is NOT a recommended technique, and certainly is unlikely to be used
+  anywhere else in wxWindows given it is so specific to not only wxMSW, but
+  also the VC compiler. However, in the case of opengl support, it's an
+  applicable technique as opengl is optional in setup.h This code (wrapped by
+  wxUSE_GLCANVAS), now allows opengl support to be added purely by modifying
+  setup.h rather than by having to modify either the project or DSP fle.
+
+  See MSDN for further information on the exact usage of these commands.
+*/
+#ifdef _MSC_VER
+#  pragma comment( lib, "opengl32" )
+#  pragma comment( lib, "glu32" )
+#endif
+
+
 static const wxChar *wxGLCanvasClassName = wxT("wxGLCanvasClass");
 static const wxChar *wxGLCanvasClassNameNoRedraw = wxT("wxGLCanvasClassNR");
 
@@ -104,7 +132,7 @@ void wxGLContext::SetCurrent()
   */
 }
 
-void wxGLContext::SetColour(const char *colour)
+void wxGLContext::SetColour(const wxChar *colour)
 {
   float r = 0.0;
   float g = 0.0;
@@ -293,10 +321,6 @@ bool wxGLCanvas::Create(wxWindow *parent,
   parent->AddChild(this);
 
   DWORD msflags = 0;
-  if ( style & wxBORDER )
-    msflags |= WS_BORDER;
-  if ( style & wxTHICK_FRAME )
-    msflags |= WS_THICKFRAME;
 
   /*
   A general rule with OpenGL and Win32 is that any window that will have a
@@ -305,18 +329,9 @@ bool wxGLCanvas::Create(wxWindow *parent,
   books that contain the wgl function descriptions.
   */
 
+  WXDWORD exStyle = 0;
   msflags |= WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
-
-  bool want3D;
-  WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D);
-
-  // Even with extended styles, need to combine with WS_BORDER
-  // for them to look right.
-  if ( want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER ) ||
-       (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))
-  {
-    msflags |= WS_BORDER;
-  }
+  msflags |= MSWGetStyle(style, & exStyle) ;
 
   return MSWCreate(wxGLCanvasClassName, NULL, pos, size, msflags, exStyle);
 }
@@ -522,7 +537,7 @@ void wxGLCanvas::SetCurrent()
   }
 }
 
-void wxGLCanvas::SetColour(const char *colour)
+void wxGLCanvas::SetColour(const wxChar *colour)
 {
   if (m_glContext)
     m_glContext->SetColour(colour);