1 // File: MainWindow.cxx
2 // Created: Thu Aug 6 10:00:35 1998
3 // Author: Administrateur Atelier MDL
4 // <mdl@efalakox.paris1.matra-dtv.fr>
12 #include <DrawRessource.h>
14 #include <MainWindow.h>
15 #include <Draw_Window.hxx>
16 #include <CommandWindow.h>
18 Standard_Boolean Draw_Interprete(char* command); // Implemente dans Draw.cxx
19 extern Standard_Boolean Draw_IsConsoleSubsystem;
21 //extern "C" int compat_unlink(const char *fname); // Implemente dans TCL
23 /*--------------------------------------------------------*\
24 | CLIENT WINDOW PROCEDURE
27 \*--------------------------------------------------------*/
28 LONG APIENTRY WndProc(HWND hWndFrame, UINT wMsg, WPARAM wParam, LONG lParam )
35 CreateProc(hWndFrame);
36 hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND);
37 DrawWindow::hWndClientMDI = hWndClient;
38 if (!Draw_IsConsoleSubsystem)
39 CreateCommandWindow(hWndFrame,0);
44 CommandProc(hWndFrame, wParam, lParam);
48 Draw_Interprete("exit");
49 DestroyProc(hWndFrame);
53 hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND);
54 return(DefFrameProc(hWndFrame, hWndClient, wMsg, wParam, lParam));
60 /*--------------------------------------------------------------------------*\
61 | CLIENT CREATE PROCEDURE
62 | Handler pour le message WM_CREATE. Creation de la fenetre de control MDI
64 \*--------------------------------------------------------------------------*/
65 BOOL CreateProc(HWND hWndFrame)
69 // Enregistre le hWnd dans la fenetre principale dans extra memory en 0
70 if (hWnd = CreateMDIClientWindow(hWndFrame))
71 SetWindowLong(hWndFrame, CLIENTWND, (LONG)hWnd);
76 /*--------------------------------------------------------------------------*\
78 | Handler pour le message WM_COMMAND
80 \*--------------------------------------------------------------------------*/
81 BOOL CommandProc(HWND hWndFrame, WPARAM wParam, LPARAM lParam)
83 HWND hWndClient; // Handle sur la fenetre MDI
86 hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND);
87 switch (LOWORD(wParam))
89 case IDM_WINDOW_NEXT :
90 if(hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND))
91 hWndActive = (HWND)SendMessage(hWndClient, WM_MDIGETACTIVE, 0, 0l);
92 SendMessage(hWndClient, WM_MDINEXT, (WPARAM)hWndActive, 0l);
95 case IDM_WINDOW_CASCADE :
96 if(hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND))
97 SendMessage(hWndClient, WM_MDICASCADE, 0, 0l);
100 case IDM_WINDOW_TILEHOR :
101 if(hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND))
102 SendMessage(hWndClient, WM_MDITILE, MDITILE_HORIZONTAL, 0l);
105 case IDM_WINDOW_TILEVERT :
106 if(hWndClient = (HWND)GetWindowLong(hWndFrame, CLIENTWND))
107 SendMessage(hWndClient, WM_MDITILE, MDITILE_VERTICAL, 0l);
111 Draw_Interprete("exit");
112 //compat_unlink(NULL);
114 DestroyProc(hWndFrame);
121 /*--------------------------------------------------------------------------*\
122 | CLIENT DESTROY PROCEDURE
123 | Handler pour le message WM_DESTROY.
125 \*--------------------------------------------------------------------------*/
126 VOID DestroyProc(HWND hWnd)
129 HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
131 HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd, GWLP_HINSTANCE);
133 Destroy_Appli(hInst);