0032308: Configuration - make Xlib dependency optional
[occt.git] / src / Draw / Draw_WNTInit.cxx
diff --git a/src/Draw/Draw_WNTInit.cxx b/src/Draw/Draw_WNTInit.cxx
new file mode 100644 (file)
index 0000000..3c9b3a3
--- /dev/null
@@ -0,0 +1,134 @@
+// Created on: 1998-08-06
+// Created by: Administrateur Atelier MDL
+// Copyright (c) 1998-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifdef _WIN32
+
+// include windows.h first to have all definitions available
+#include <windows.h>
+
+#include "Draw_Window.hxx"
+#include "Draw_WNTRessource.pxx"
+#include "Draw_WNTInit.pxx"
+#include "Draw_WNTMainWindow.pxx"
+#include "Draw_WNTCommandWindow.pxx"
+
+#define USEDEFAULT 200
+
+/*--------------------------------------------------------*\
+|  REGISTER APPLICATION CLASS
+|  Enregistrement des classes de fenetres de l'application
+|
+\*--------------------------------------------------------*/
+BOOL RegisterAppClass (HINSTANCE theInstance)
+{
+  WNDCLASSW wndClass;
+
+  // Parametres communs aux classes
+  //-----
+  wndClass.style         = CS_HREDRAW | CS_VREDRAW | CS_CLASSDC;
+  wndClass.cbClsExtra    = 0;
+  wndClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
+  wndClass.hInstance     = theInstance;
+
+  // Enregistrement de la fenetre principale
+  //-----
+  wndClass.cbWndExtra    = sizeof(void*);
+  wndClass.lpfnWndProc   = (WNDPROC)WndProc;
+  wndClass.hIcon         = LoadIconW (theInstance, MAKEINTRESOURCEW(IDI_ICON1));
+  wndClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
+  wndClass.lpszMenuName  = MAKEINTRESOURCEW(APPMENU);
+  wndClass.lpszClassName = APPCLASS;
+  if (!RegisterClassW (&wndClass))
+  {
+    return FALSE;
+  }
+
+  // Enregistrement de la fenetre DrawWindow
+  //------
+  wndClass.cbWndExtra    = sizeof(void*); // Extra Memory
+  wndClass.lpfnWndProc   = (WNDPROC)Draw_Window::DrawProc;
+  wndClass.hIcon         = 0;
+  wndClass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH);
+  wndClass.lpszMenuName  = NULL;
+  wndClass.lpszClassName = DRAWCLASS;
+  if (!RegisterClassW (&wndClass))
+  {
+    UnregisterClassW (APPCLASS, theInstance);
+    return FALSE;
+  }
+
+  // Enregistrement de la fenetre CommandWindow
+  //------
+  wndClass.lpfnWndProc   = (WNDPROC)CommandProc;
+  wndClass.hIcon         = 0;
+  wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
+  wndClass.lpszMenuName  = NULL;
+  wndClass.lpszClassName = COMMANDCLASS;
+  if (!RegisterClassW (&wndClass))
+  {
+    UnregisterClassW (APPCLASS,  theInstance);
+    UnregisterClassW (DRAWCLASS, theInstance);
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+/*--------------------------------------------------------*\
+|  UNREGISTER APPLICATION CLASS
+|    Suppression des classes de fenetres de l'application
+|
+\*--------------------------------------------------------*/
+VOID UnregisterAppClass (HINSTANCE theInstance)
+{
+  UnregisterClassW (APPCLASS,  theInstance);
+  UnregisterClassW (DRAWCLASS, theInstance);
+}
+
+/*--------------------------------------------------------*\
+|  CREATE APPLICATION WINDOW
+|    Creation de la fenetre Top-Level
+|
+\*--------------------------------------------------------*/
+HWND CreateAppWindow (HINSTANCE theInstance)
+{
+  return CreateWindowW (APPCLASS, APPTITLE,
+                        WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
+                        400, 0,
+                        623,767,
+                        NULL, NULL, theInstance, NULL);
+}
+
+/*--------------------------------------------------------*\
+|  CREATE MDI CLIENT WINDOW
+|    Creation de la fenetre qui contient des fenetres MDI
+|
+\*--------------------------------------------------------*/
+HWND CreateMDIClientWindow (HWND theWndFrame)
+{
+  CLIENTCREATESTRUCT ccs;
+  ccs.hWindowMenu = NULL;
+  ccs.idFirstChild = 0;
+
+  HINSTANCE hInstance = (HINSTANCE )GetWindowLongPtrW (theWndFrame, GWLP_HINSTANCE);
+  HWND hWndClient = CreateWindowW (L"MDICLIENT", NULL,
+                                   WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | MDIS_ALLCHILDSTYLES,
+                                   0, 0, 1, 1,
+                                   theWndFrame, NULL,
+                                   hInstance, (LPVOID )&ccs);
+  return hWndClient;
+}
+#endif