1 // Created on: 1998-08-06
2 // Created by: Administrateur Atelier MDL
3 // Copyright (c) 1998-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
20 #include <DrawRessource.h>
22 #include <Draw_Window.hxx>
24 #include <MainWindow.h>
25 #include <CommandWindow.h>
27 Standard_Boolean Draw_Interprete(const char* command); // Implemented in Draw.cxx
28 extern Standard_Boolean Draw_IsConsoleSubsystem;
30 //extern "C" int compat_unlink(const char *fname); // Implemente dans TCL
32 /*--------------------------------------------------------*\
33 | CLIENT WINDOW PROCEDURE
36 \*--------------------------------------------------------*/
37 LRESULT APIENTRY WndProc(HWND hWndFrame, UINT wMsg, WPARAM wParam, LPARAM lParam )
43 CreateProc (hWndFrame);
44 HWND hWndClient = (HWND )GetWindowLongPtrW (hWndFrame, CLIENTWND);
45 DrawWindow::hWndClientMDI = hWndClient;
46 if (!Draw_IsConsoleSubsystem)
48 CreateCommandWindow (hWndFrame, 0);
54 CmdProc (hWndFrame, LOWORD(wParam), wParam, lParam);
59 Draw_Interprete ("exit");
60 DestroyProc (hWndFrame);
64 HWND hWndClient = (HWND)GetWindowLongPtrW(hWndFrame, CLIENTWND);
65 return DefFrameProcW(hWndFrame, hWndClient, wMsg, wParam, lParam);
69 /*--------------------------------------------------------------------------*\
70 | CLIENT CREATE PROCEDURE
71 | Handler for message WM_CREATE. Creation of control window MDI
73 \*--------------------------------------------------------------------------*/
74 BOOL CreateProc(HWND hWndFrame)
76 HWND hWnd = CreateMDIClientWindow (hWndFrame);
79 // Save hWnd in the main window in extra memory in 0
80 SetWindowLongPtrW (hWndFrame, CLIENTWND, (LONG_PTR)hWnd);
86 /*--------------------------------------------------------------------------*\
88 | Handler for message WM_COMMAND
89 | It is used when Draw_IsConsoleSubsystem = Standard_False
90 | i.e. in non-console mode (see Draw_main() in Draw_Main.cxx).
91 \*--------------------------------------------------------------------------*/
92 LRESULT APIENTRY CmdProc(HWND hWndFrame, UINT wMsg, WPARAM /*wParam*/, LPARAM /*lParam*/)
94 // Handle on window MDI
95 HWND hWndClient = (HWND )GetWindowLongPtrW (hWndFrame, CLIENTWND);
100 if (hWndClient != NULL)
102 HWND hWndActive = (HWND )SendMessageW (hWndClient, WM_MDIGETACTIVE, 0, 0l);
103 SendMessageW (hWndClient, WM_MDINEXT, (WPARAM )hWndActive, 0l);
107 case IDM_WINDOW_CASCADE:
109 if (hWndClient != NULL)
111 SendMessageW (hWndClient, WM_MDICASCADE, 0, 0l);
115 case IDM_WINDOW_TILEHOR:
117 if (hWndClient != NULL)
119 SendMessageW (hWndClient, WM_MDITILE, MDITILE_HORIZONTAL, 0l);
123 case IDM_WINDOW_TILEVERT:
125 if (hWndClient != NULL)
127 SendMessageW (hWndClient, WM_MDITILE, MDITILE_VERTICAL, 0l);
133 Draw_Interprete ("exit");
134 DestroyProc (hWndFrame);
142 /*--------------------------------------------------------------------------*\
143 | CLIENT DESTROY PROCEDURE
144 | Handler for message WM_DESTROY.
146 \*--------------------------------------------------------------------------*/
147 VOID DestroyProc(HWND hWnd)
149 HINSTANCE hInst = (HINSTANCE )GetWindowLongPtrW (hWnd, GWLP_HINSTANCE);
151 Destroy_Appli(hInst);