Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / mfc / standard / 08_HLR / src / HLRApp.cpp
1 // HLRApp.cpp : Defines the class behaviors for the application.
2 //
3
4 #include "stdafx.h"
5
6 #include "HLRApp.h"
7
8 #include <OCC_MainFrame.h>
9 #include <OCC_3dChildFrame.h>
10 #include "HLRDoc.h"
11 #include <OCC_2dChildFrame.h>
12 #include "HLRView2D.h"
13 #include <OCC_3dView.h>
14 // End CasCade
15
16 #ifdef _DEBUG
17 // CasCade :
18 //#define new DEBUG_NEW
19 // End CasCade
20
21 #undef THIS_FILE
22 static char THIS_FILE[] = __FILE__;
23 #endif
24
25 /////////////////////////////////////////////////////////////////////////////
26 // CHLRApp construction
27
28 CHLRApp::CHLRApp()
29 {
30         SampleName = "HLR";     //for about dialog
31 }
32
33 CHLRApp::~CHLRApp()
34 {
35     delete pDocTemplateForView2d;
36 }
37 /////////////////////////////////////////////////////////////////////////////
38 // The one and only CHLRApp object
39
40 CHLRApp theApp;
41
42 /////////////////////////////////////////////////////////////////////////////
43 // CHLRApp initialization
44
45 BOOL CHLRApp::InitInstance()
46 {
47         AfxEnableControlContainer();
48
49         // Standard initialization
50         // If you are not using these features and wish to reduce the size
51         //  of your final executable, you should remove from the following
52         //  the specific initialization routines you do not need.
53
54         // Change the registry key under which our settings are stored.
55         // You should modify this string to be something appropriate
56         // such as the name of your company or organization.
57         // Modified by CasCade :
58         SetRegistryKey(_T("Local CasCade Applications"));
59
60         LoadStdProfileSettings();  // Load standard INI file options (including MRU)
61
62         // Register the application's document templates.  Document templates
63         //  serve as the connection between documents, frame windows and views.
64
65 // CasCade :
66
67     
68     pDocTemplateForView2d = new CMultiDocTemplate(
69                 IDR_2DTYPE,
70                 RUNTIME_CLASS(CHLRDoc),
71                 RUNTIME_CLASS(OCC_2dChildFrame), // custom MDI child frame
72                 RUNTIME_CLASS(CHLRView2D));
73
74 //      AddDocTemplate(pDocTemplateForView2d);
75
76 // End CasCade
77
78     pDocTemplateForView3d  = new CMultiDocTemplate(
79                 IDR_3DTYPE,
80                 RUNTIME_CLASS(CHLRDoc),
81                 RUNTIME_CLASS(OCC_3dChildFrame), // custom MDI child frame
82                 RUNTIME_CLASS(OCC_3dView));
83
84         AddDocTemplate(pDocTemplateForView3d);
85
86
87         // create main MDI Frame window
88         OCC_MainFrame* pMainFrame = new OCC_MainFrame(with_AIS_TB);
89         if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
90                 return FALSE;
91         m_pMainWnd = pMainFrame;
92         
93         // Parse command line for standard shell commands, DDE, file open
94         CCommandLineInfo cmdInfo;
95         ParseCommandLine(cmdInfo);
96
97         // Dispatch commands specified on the command line
98         if (!ProcessShellCommand(cmdInfo))
99                 return FALSE;
100
101         // The main window has been initialized, so show and update it.
102         pMainFrame->MDITile(MDITILE_VERTICAL);
103         pMainFrame->ShowWindow(m_nCmdShow);
104         pMainFrame->UpdateWindow();
105
106         return TRUE;
107 }
108
109 /////////////////////////////////////////////////////////////////////////////
110 // CHLRApp commands
111
112 //===================================================
113
114 CFrameWnd*  CHLRApp::CreateView2D(CHLRDoc* pDoc )
115 {
116   ASSERT_VALID(pDoc);
117   ASSERT_VALID(pDocTemplateForView2d);
118   CRuntimeClass * pViewClass = RUNTIME_CLASS(OCC_2dView);
119   ASSERT(pViewClass != (CRuntimeClass *)NULL );
120   // Create a new frame window
121   CFrameWnd* pNewFrame = pDocTemplateForView2d->CreateNewFrame(pDoc, NULL);
122   ASSERT_VALID(pDoc);
123   pDocTemplateForView2d->InitialUpdateFrame(pNewFrame, pDoc);
124   ASSERT_VALID(pDoc);
125 return pNewFrame;
126 }
127
128 //===================================================
129 CFrameWnd*  CHLRApp::CreateView3D(CHLRDoc* pDoc )
130 {
131   ASSERT_VALID(pDoc);
132   ASSERT_VALID(pDocTemplateForView3d);
133   CRuntimeClass * pViewClass = RUNTIME_CLASS(OCC_3dView);
134   ASSERT(pViewClass != (CRuntimeClass *)NULL );
135   // Create a new frame window
136   CFrameWnd* pNewFrame = pDocTemplateForView3d->CreateNewFrame(pDoc, NULL);
137   pDocTemplateForView3d->InitialUpdateFrame(pNewFrame, pDoc);
138 return pNewFrame;
139
140 }
141
142
143 BOOL CHLRApp::IsViewExisting(CDocument * pDoc, CRuntimeClass * pViewClass, CView * & pView)
144 {
145   ASSERT_VALID(pDoc);
146   ASSERT(pViewClass != (CRuntimeClass *)NULL );
147
148   POSITION position = pDoc->GetFirstViewPosition();
149   while (position != (POSITION)NULL)
150   {
151     CView* pCurrentView = pDoc->GetNextView(position);
152     ASSERT_VALID(pCurrentView);
153     if (pCurrentView->IsKindOf(pViewClass))
154         {
155       pView = pCurrentView;
156           return TRUE;
157         }
158   }
159   return FALSE;
160 }
161
162
163