0023776: Redesign of MFC samples after V2d viewer removing
[occt.git] / samples / mfc / standard / 01_Geometry / src / GeometryApp.cpp
1 // GeometryApp.cpp : Defines the class behaviors for the application.
2 //
3
4 #include "stdafx.h"
5
6 #include "GeometryApp.h"
7 #include "MainFrm.h"
8 #include "ChildFrm.h"
9 #include "GeometryDoc.h"
10 #include "GeometryView.h"
11 #include "GeometryView2d.h"
12 #include "ChildFrm2D.h"
13 #include "GeometryView2d.h"
14
15 /////////////////////////////////////////////////////////////////////////////
16 // CGeometryApp construction
17
18 CGeometryApp::CGeometryApp() : OCC_App()
19 {
20   SampleName = "Geometry";      //for about dialog
21 }
22
23 CGeometryApp::~CGeometryApp()
24 {
25   delete pDocTemplateForView2d;
26 }
27 /////////////////////////////////////////////////////////////////////////////
28 // The one and only CGeometryApp object
29
30 CGeometryApp theApp;
31
32 /////////////////////////////////////////////////////////////////////////////
33 // CGeometryApp initialization
34
35 BOOL CGeometryApp::InitInstance()
36 {
37   AfxInitRichEdit();
38   AfxEnableControlContainer();
39
40   // Standard initialization
41   // If you are not using these features and wish to reduce the size
42   //  of your final executable, you should remove from the following
43   //  the specific initialization routines you do not need.
44
45   // Change the registry key under which our settings are stored.
46   // You should modify this string to be something appropriate
47   // such as the name of your company or organization.
48   SetRegistryKey(_T("Local AppWizard-Generated Applications"));
49
50   LoadStdProfileSettings();  // Load standard INI file options (including MRU)
51
52   // Register the application's document templates.  Document templates
53   //  serve as the connection between documents, frame windows and views.
54
55   pDocTemplateForView3d = new CMultiDocTemplate(
56     IDR_3DTYPE,
57     RUNTIME_CLASS(CGeometryDoc),
58     RUNTIME_CLASS(CChildFrame), // custom MDI child frame
59     RUNTIME_CLASS(CGeometryView));
60   AddDocTemplate(pDocTemplateForView3d);
61
62   pDocTemplateForView2d = new CMultiDocTemplate(
63     IDR_2DTYPE,
64     RUNTIME_CLASS(CGeometryDoc),
65     RUNTIME_CLASS(CChildFrame2D), // custom MDI child frame
66     RUNTIME_CLASS(CGeometryView2D));
67   //AddDocTemplate(pDocTemplateForView2d);
68
69   // create main MDI Frame window
70   CMainFrame* pMainFrame = new CMainFrame;
71   if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
72     return FALSE;
73   m_pMainWnd = pMainFrame;
74
75   // Parse command line for standard shell commands, DDE, file open
76   CCommandLineInfo cmdInfo;
77   ParseCommandLine(cmdInfo);
78
79   // Dispatch commands specified on the command line
80   if (!ProcessShellCommand(cmdInfo))
81     return FALSE;
82
83   // The main window has been initialized, so show and update it.
84   pMainFrame->ShowWindow(m_nCmdShow);
85   pMainFrame->UpdateWindow();
86
87   return TRUE;
88 }
89
90 /////////////////////////////////////////////////////////////////////////////
91 // CGeometryApp commands
92
93 //===================================================
94
95 CFrameWnd*  CGeometryApp::CreateView2D(CGeometryDoc* pDoc )
96 {
97   ASSERT_VALID(pDoc);
98   ASSERT_VALID(pDocTemplateForView2d);
99   CRuntimeClass * pViewClass = RUNTIME_CLASS(CGeometryView2D);
100   ASSERT(pViewClass != (CRuntimeClass *)NULL );
101   // Create a new frame window
102   CFrameWnd* pNewFrame = pDocTemplateForView2d->CreateNewFrame(pDoc, NULL);
103   pDocTemplateForView2d->InitialUpdateFrame(pNewFrame, pDoc);
104 return pNewFrame;
105 }
106
107 BOOL CGeometryApp::IsViewExisting(CDocument * pDoc, CRuntimeClass * pViewClass, CView * & pView)
108 {
109   ASSERT_VALID(pDoc);
110   ASSERT(pViewClass != (CRuntimeClass *)NULL );
111
112   POSITION position = pDoc->GetFirstViewPosition();
113   while (position != (POSITION)NULL)
114   {
115     CView* pCurrentView = pDoc->GetNextView(position);
116     ASSERT_VALID(pCurrentView);
117     if (pCurrentView->IsKindOf(pViewClass))
118     {
119       pView = pCurrentView;
120       return TRUE;
121     }
122   }
123   return FALSE;
124 }
125