00001
00002
00003 #include "stdafx.h"
00004 #include "Viewer.h"
00005
00006 #include "ChildFrm.h"
00007 #include "LeftView.h"
00008 #include "TreeAnimView.h"
00009 #include "BottomView.h"
00010 #include "ViewerDoc.h"
00011 #include "ViewerView.h"
00012
00013 #ifdef _DEBUG
00014 #define new DEBUG_NEW
00015 #endif
00016
00017
00018
00019
00020 IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)
00021
00022 BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
00023
00024
00025 ON_WM_CREATE()
00026 ON_WM_DESTROY()
00027 ON_COMMAND(ID_DISPLAY_SHOWSELECTION, OnDisplayShowselection)
00028 ON_WM_SIZE()
00029 ON_WM_SIZING()
00030 END_MESSAGE_MAP()
00031
00032
00033
00034
00035 CChildFrame::CChildFrame()
00036 {
00037 m_pGameViewer = NULL;
00038 m_pDocument = NULL;
00039 m_bAutoMenuEnable = FALSE;
00040 }
00041
00042 CChildFrame::~CChildFrame()
00043 {
00044 if( m_pGameViewer )
00045 Deletep( m_pGameViewer );
00046 }
00047
00048 BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT , CCreateContext* pContext)
00049 {
00050 m_pDocument = (CViewerDoc*)pContext->m_pCurrentDoc;
00051
00052
00053 if (!m_wndSplitter.CreateStatic(this, 1, 2))
00054 return FALSE;
00055
00056
00057 if (!m_wndSplitter2.CreateStatic( &m_wndSplitter, 2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 0)))
00058 return FALSE;
00059
00060 if (!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(0, 100), pContext) ||
00061 !m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CTreeAnimView), CSize(100, 0), pContext))
00062 {
00063 m_wndSplitter.DestroyWindow();
00064 m_wndSplitter2.DestroyWindow();
00065 return FALSE;
00066 }
00067
00068
00069 if (!m_wndSplitter3.CreateStatic( &m_wndSplitter, 2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 1)))
00070 return FALSE;
00071
00072 if (!m_wndSplitter3.CreateView(0, 0, RUNTIME_CLASS(CViewerView), CSize(100, 250), pContext) ||
00073 !m_wndSplitter3.CreateView(1, 0, RUNTIME_CLASS(CBottomView), CSize(100, 150), pContext))
00074 {
00075 m_wndSplitter.DestroyWindow();
00076 m_wndSplitter2.DestroyWindow();
00077 m_wndSplitter3.DestroyWindow();
00078 return FALSE;
00079 }
00080
00081 CRect Rect;
00082 GetWindowRect( &Rect );
00083
00084 m_wndSplitter.SetColumnInfo( 0, 200, 10 );
00085 m_wndSplitter2.SetRowInfo( 0, 300, 10 );
00086 m_wndSplitter3.SetRowInfo( 0, 250, 100 );
00087 m_wndSplitter3.SetRowInfo( 1, 150, 100 );
00088
00089
00090 m_Menu.LoadMenu( IDR_MENU_CHILD );
00091 SetHandles( m_Menu.GetSafeHmenu(), NULL );
00092 DrawMenuBar();
00093
00094 CMenu* pMenu = m_Menu.GetSubMenu( 2 );
00095 pMenu->CheckMenuItem( ID_DISPLAY_SHOWSELECTION, MF_BYCOMMAND | MF_UNCHECKED );
00096
00097 return TRUE;
00098 }
00099
00100 BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
00101 {
00102
00103 if( !CMDIChildWnd::PreCreateWindow(cs) )
00104 return FALSE;
00105
00106 return TRUE;
00107 }
00108
00109
00110
00111
00112 #ifdef _DEBUG
00113 void CChildFrame::AssertValid() const
00114 {
00115 CMDIChildWnd::AssertValid();
00116 }
00117
00118 void CChildFrame::Dump(CDumpContext& dc) const
00119 {
00120 CMDIChildWnd::Dump(dc);
00121 }
00122
00123 #endif //_DEBUG
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232 int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
00233 {
00234 theApp.ResetCurrentDirectory();
00235
00236 if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
00237 return -1;
00238
00239 CViewerView* pView = GetDocument()->GetViewerView();
00240
00241 CRect cRect = pView->GetViewerRect();
00242 KRect kRect( cRect.left, cRect.top, cRect.right, cRect.bottom );
00243 m_pGameViewer = new KGameViewer( theApp.m_hInstance );
00244 if( !m_pGameViewer->Init( pView->m_hWnd, kRect ) )
00245 return -1;
00246
00247 GetDocument()->SetChildFrame( this );
00248
00249 return 0;
00250 }
00251
00252 void CChildFrame::OnDestroy()
00253 {
00254 CMDIChildWnd::OnDestroy();
00255
00256 if( m_pGameViewer )
00257 {
00258 m_pGameViewer->End();
00259 if( m_pGameViewer )
00260 Deletep( m_pGameViewer );
00261 }
00262 }
00263
00264 bool CChildFrame::Manage()
00265 {
00266 if( m_pGameViewer )
00267 m_pGameViewer->Run();
00268
00269 return true;
00270 }
00271
00272 BOOL CChildFrame::OnCommand(WPARAM wParam, LPARAM lParam)
00273 {
00274
00275
00276 return CMDIChildWnd::OnCommand(wParam, lParam);
00277 }
00278
00279 void CChildFrame::OnDisplayShowselection()
00280 {
00281
00282 CMenu* pMenu = m_Menu.GetSubMenu( 2 );
00283 UINT State = pMenu->GetMenuState( ID_DISPLAY_SHOWSELECTION, MF_BYCOMMAND );
00284
00285 if( State & MF_CHECKED )
00286 {
00287 pMenu->CheckMenuItem( ID_DISPLAY_SHOWSELECTION, MF_BYCOMMAND | MF_UNCHECKED );
00288 GetDocument()->GetBottomView()->SetShowSelection( false );
00289 GetDocument()->GetBottomView()->Refresh();
00290 }
00291 else
00292 {
00293 pMenu->CheckMenuItem( ID_DISPLAY_SHOWSELECTION, MF_BYCOMMAND | MF_CHECKED );
00294 GetDocument()->GetBottomView()->SetShowSelection( true );
00295 GetDocument()->GetBottomView()->Refresh();
00296 }
00297 }
00298
00299 void CChildFrame::OnSize(UINT nType, int cx, int cy)
00300 {
00301 CMDIChildWnd::OnSize(nType, cx, cy);
00302
00303
00304
00305
00306 }
00307
00308 void CChildFrame::OnSizing(UINT fwSide, LPRECT pRect)
00309 {
00310 CMDIChildWnd::OnSizing(fwSide, pRect);
00311
00312
00313
00314
00315
00316
00317 }