www.pudn.com > etree_src.zip > OpenGL.cpp
//****************************************************************************
// OpenGL.cpp : Defines the class behaviors for the application.
//
// Copyright (c) Boris J. Wang (e_boris2002@hotmail.com) 2002 - 2003
// From Institute of Computing Technology, Chinese Academy of Sciences
// Beijing 100871, China
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//****************************************************************************
#include "stdafx.h"
#include "OpenGL.h"
#include "ControlPane.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COpenGLApp
BEGIN_MESSAGE_MAP(COpenGLApp, CWinApp)
//{{AFX_MSG_MAP(COpenGLApp)
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COpenGLApp construction
COpenGLApp::COpenGLApp()
{
Wnd_w = 540,Wnd_h = 350;
IsZoomed = FALSE;
CtrlPane_X = 100,CtrlPane_Y = 100;
bAutoClose = FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// The one and only COpenGLApp object
COpenGLApp theApp;
/////////////////////////////////////////////////////////////////////////////
// COpenGLApp initialization
const LPCTSTR COpenGLApp::ConfigFn = _T("TreeModl.Cfg");
BOOL COpenGLApp::InitInstance()
{
// Standard initialization
//AfxMessageBox("On InitInstance()"); Pause for remote debug
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
///////////////////////////////////////////
//Load Config
{Configuration conf;
CFile f;
if(f.Open(ConfigFn,CFile::modeRead,NULL))
{
try
{
f.Read(&conf,sizeof(Configuration));
if(conf.MainWndWidth >100 )Wnd_w = conf.MainWndWidth;
if(conf.MainWndHeight >50 )Wnd_h = conf.MainWndHeight;
wgl.RotX = conf.RotX;
wgl.RotY = conf.RotY;
wgl.OrgX = conf.OrgX;
wgl.OrgY = conf.OrgY;
wgl.OrgZ = conf.OrgZ;
IsZoomed = conf.IsZoomed;
CtrlPane_X = conf.CtrlPane_X;
CtrlPane_Y = conf.CtrlPane_Y;
bAutoClose = conf.bAutoClose;
int i;
for(i=0;i= CControlPane::AllCtrlParam[i].Min)
{
*(CControlPane::AllCtrlParam[i].Target) = conf.ModelParams[i];
}
}
}
catch(CFileException * e)
{
e->Delete();
}
}
}
CLeaf::InitLeafSizeNoiseSeq();
wgl.wcp = &wcp;
wcp.wgl = &wgl;
this->m_pMainWnd = &wgl;
wgl.Create(Wnd_w,Wnd_h,NULL);
wgl.ShowWindow(SW_SHOW);
wgl.CenterWindow();
if(IsZoomed)wgl.ShowWindow(SW_MAXIMIZE);
wcp.bAutoClose = bAutoClose;
wcp.Create(IDD_Control,&wgl);
wcp.ShowWindow(SW_HIDE);
wcp.SetWindowPos(NULL,CtrlPane_X,CtrlPane_Y,0,0,SWP_NOZORDER|SWP_NOSIZE);
wgl.SetFocus();
m_bHelpMode = FALSE;
return TRUE;
}
int COpenGLApp::ExitInstance()
{
//Save config
{Configuration conf;
CFile f;
if(f.Open(ConfigFn,CFile::modeReadWrite|CFile::modeCreate,NULL))
{
conf.MainWndWidth = Wnd_w;
conf.MainWndHeight = Wnd_h;
conf.RotX = wgl.RotX;
conf.RotY = wgl.RotY;
conf.OrgX = wgl.OrgX;
conf.OrgY = wgl.OrgY;
conf.OrgZ = wgl.OrgZ;
conf.IsZoomed = IsZoomed;
conf.CtrlPane_X = CtrlPane_X;
conf.CtrlPane_Y = CtrlPane_Y;
conf.bAutoClose = bAutoClose;
int i;
for(i=0;iDelete();
}
}
}
CLeaf::InitLeafSizeNoiseSeq(TRUE);
return CWinApp::ExitInstance();
}