Procházet zdrojové kódy

allow multiple windows

David Rose před 24 roky
rodič
revize
672e42b304
1 změnil soubory, kde provedl 13 přidání a 8 odebrání
  1. 13 8
      panda/src/wdxdisplay/wdxGraphicsWindow.cxx

+ 13 - 8
panda/src/wdxdisplay/wdxGraphicsWindow.cxx

@@ -45,6 +45,8 @@
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 TypeHandle wdxGraphicsWindow::_type_handle;
 TypeHandle wdxGraphicsWindow::_type_handle;
 
 
+static bool wc_registered = false;
+
 #define LAST_ERROR 0
 #define LAST_ERROR 0
 #define ERRORBOX_TITLE "Panda3D Error"
 #define ERRORBOX_TITLE "Panda3D Error"
 #define WDX_WINDOWCLASSNAME "wdxDisplay"
 #define WDX_WINDOWCLASSNAME "wdxDisplay"
@@ -934,14 +936,17 @@ void wdxGraphicsWindow::config(void) {
         _hMouseCursor = LoadCursor(NULL, IDC_ARROW);
         _hMouseCursor = LoadCursor(NULL, IDC_ARROW);
     }
     }
 
 
-    wc.hCursor = _hMouseCursor;
-    wc.hbrBackground  = (HBRUSH)GetStockObject(BLACK_BRUSH);
-    wc.lpszMenuName   = NULL;
-    wc.lpszClassName  = WDX_WINDOWCLASSNAME;
-
-    if(!RegisterClass(&wc)) {
-        wdxdisplay_cat.fatal() << "could not register window class!" << endl;
-        exit(1);
+    if (!wc_registered) {
+      // We only need to register the window class once per session.
+      wc.hCursor = _hMouseCursor;
+      wc.hbrBackground  = (HBRUSH)GetStockObject(BLACK_BRUSH);
+      wc.lpszMenuName   = NULL;
+      wc.lpszClassName  = WDX_WINDOWCLASSNAME;
+      
+      if(!RegisterClass(&wc)) {
+        wdxdisplay_cat.error() << "could not register window class!" << endl;
+      }
+      wc_registered = true;
     }
     }
 
 
     DWORD window_style = WS_POPUP | WS_SYSMENU;  // for CreateWindow
     DWORD window_style = WS_POPUP | WS_SYSMENU;  // for CreateWindow