From Michael Hartman, " Here is the MFC_OSG example. It is very basic and the community is welcome to enhance/improve this example. There is one bug documented in the Readme.txt file that I just have not had time to solve. Also, the code is built outside of the OSG environment and uses environment variables to get to the OSG distribution headers and examples. That should be the only change a user needs to make to get the code to compile."
This commit is contained in:
parent
8c7b5b5865
commit
4eb8427327
60
examples/osgviewerMFC/ChildFrm.cpp
Normal file
60
examples/osgviewerMFC/ChildFrm.cpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// ChildFrm.cpp : implementation of the CChildFrame class
|
||||||
|
//
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG_MDI.h"
|
||||||
|
#include "ChildFrm.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CChildFrame
|
||||||
|
|
||||||
|
IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
// CChildFrame construction/destruction
|
||||||
|
|
||||||
|
CChildFrame::CChildFrame()
|
||||||
|
{
|
||||||
|
// TODO: add member initialization code here
|
||||||
|
}
|
||||||
|
|
||||||
|
CChildFrame::~CChildFrame()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
|
||||||
|
{
|
||||||
|
// TODO: Modify the Window class or styles here by modifying the CREATESTRUCT cs
|
||||||
|
if( !CMDIChildWnd::PreCreateWindow(cs) )
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
|
||||||
|
| FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CChildFrame diagnostics
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
void CChildFrame::AssertValid() const
|
||||||
|
{
|
||||||
|
CMDIChildWnd::AssertValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CChildFrame::Dump(CDumpContext& dc) const
|
||||||
|
{
|
||||||
|
CMDIChildWnd::Dump(dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //_DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
// CChildFrame message handlers
|
34
examples/osgviewerMFC/ChildFrm.h
Normal file
34
examples/osgviewerMFC/ChildFrm.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// ChildFrm.h : interface of the CChildFrame class
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
class CChildFrame : public CMDIChildWnd
|
||||||
|
{
|
||||||
|
DECLARE_DYNCREATE(CChildFrame)
|
||||||
|
public:
|
||||||
|
CChildFrame();
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Operations
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
public:
|
||||||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
public:
|
||||||
|
virtual ~CChildFrame();
|
||||||
|
#ifdef _DEBUG
|
||||||
|
virtual void AssertValid() const;
|
||||||
|
virtual void Dump(CDumpContext& dc) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generated message map functions
|
||||||
|
protected:
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
164
examples/osgviewerMFC/MFC_OSG.cpp
Normal file
164
examples/osgviewerMFC/MFC_OSG.cpp
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// MFC_OSG.cpp : implementation of the cOSG class
|
||||||
|
//
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG.h"
|
||||||
|
|
||||||
|
|
||||||
|
cOSG::cOSG(HWND hWnd) :
|
||||||
|
m_hWnd(hWnd)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// We must set the pixelformat before we can create the OSG Rendering Surface
|
||||||
|
//
|
||||||
|
PIXELFORMATDESCRIPTOR pixelFormat =
|
||||||
|
{
|
||||||
|
sizeof(PIXELFORMATDESCRIPTOR),
|
||||||
|
1,
|
||||||
|
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL,
|
||||||
|
PFD_TYPE_RGBA,
|
||||||
|
24,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
PFD_MAIN_PLANE,
|
||||||
|
0,
|
||||||
|
0, 0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
HDC hdc = ::GetDC(m_hWnd);
|
||||||
|
if (hdc==0)
|
||||||
|
{
|
||||||
|
::DestroyWindow(m_hWnd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pixelFormatIndex = ::ChoosePixelFormat(hdc, &pixelFormat);
|
||||||
|
if (pixelFormatIndex==0)
|
||||||
|
{
|
||||||
|
::ReleaseDC(m_hWnd, hdc);
|
||||||
|
::DestroyWindow(m_hWnd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!::SetPixelFormat(hdc, pixelFormatIndex, &pixelFormat))
|
||||||
|
{
|
||||||
|
::ReleaseDC(m_hWnd, hdc);
|
||||||
|
::DestroyWindow(m_hWnd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void cOSG::InitOSG(std::string modelname)
|
||||||
|
{
|
||||||
|
// Store the name of the model to load
|
||||||
|
m_ModelName = modelname;
|
||||||
|
|
||||||
|
// Init different parts of OSG
|
||||||
|
InitManipulators();
|
||||||
|
InitSceneGraph();
|
||||||
|
InitCameraConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cOSG::InitManipulators(void)
|
||||||
|
{
|
||||||
|
// Create a trackball manipulator
|
||||||
|
trackball = new osgGA::TrackballManipulator();
|
||||||
|
|
||||||
|
// Create a Manipulator Switcher
|
||||||
|
keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;
|
||||||
|
|
||||||
|
// Add our trackball manipulator to the switcher
|
||||||
|
keyswitchManipulator->addMatrixManipulator( '1', "Trackball", trackball.get());
|
||||||
|
|
||||||
|
// Init the switcher to the first manipulator (in this case the only manipulator)
|
||||||
|
keyswitchManipulator->selectMatrixManipulator(0); // Zero based index Value
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cOSG::InitSceneGraph(void)
|
||||||
|
{
|
||||||
|
// Init the main Root Node/Group
|
||||||
|
mRoot = new osg::Group;
|
||||||
|
|
||||||
|
// Load the Model from the model name
|
||||||
|
mModel = osgDB::readNodeFile(m_ModelName);
|
||||||
|
|
||||||
|
// Optimize the model
|
||||||
|
osgUtil::Optimizer optimizer;
|
||||||
|
optimizer.optimize(mModel.get());
|
||||||
|
optimizer.reset();
|
||||||
|
|
||||||
|
// Add the model to the scene
|
||||||
|
mRoot->addChild(mModel.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void cOSG::InitCameraConfig(void)
|
||||||
|
{
|
||||||
|
// Local Variable to hold window size data
|
||||||
|
RECT rect;
|
||||||
|
|
||||||
|
// Create the viewer for this window
|
||||||
|
mViewer = new osgViewer::Viewer;
|
||||||
|
|
||||||
|
// Add a Stats Handler to the viewer
|
||||||
|
mViewer->addEventHandler(new osgViewer::StatsHandler);
|
||||||
|
|
||||||
|
// Get the current window size
|
||||||
|
::GetWindowRect(m_hWnd, &rect);
|
||||||
|
|
||||||
|
// Init the GraphicsContext Traits
|
||||||
|
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
|
||||||
|
|
||||||
|
// Init the Windata Variable that holds the handle for the Window to display OSG in.
|
||||||
|
osg::ref_ptr<osg::Referenced> windata = new osgViewer::GraphicsWindowWin32::WindowData(m_hWnd);
|
||||||
|
|
||||||
|
// Setup the traits parameters
|
||||||
|
traits->x = 0;
|
||||||
|
traits->y = 0;
|
||||||
|
traits->width = rect.right - rect.left;
|
||||||
|
traits->height = rect.bottom - rect.top;
|
||||||
|
traits->windowDecoration = false;
|
||||||
|
traits->doubleBuffer = true;
|
||||||
|
traits->sharedContext = 0;
|
||||||
|
traits->inheritedWindowData = windata;
|
||||||
|
|
||||||
|
// Create the Graphics Context
|
||||||
|
osg::GraphicsContext* gc = osg::GraphicsContext::createGraphicsContext(traits.get());
|
||||||
|
|
||||||
|
// Init a new Camera (Master for this View)
|
||||||
|
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
|
||||||
|
|
||||||
|
// Assign Graphics Context to the Camera
|
||||||
|
camera->setGraphicsContext(gc);
|
||||||
|
|
||||||
|
// Set the viewport for the Camera
|
||||||
|
camera->setViewport(new osg::Viewport(traits->x, traits->y, traits->width, traits->height));
|
||||||
|
|
||||||
|
// Add the Camera to the Viewer
|
||||||
|
mViewer->addSlave(camera.get());
|
||||||
|
|
||||||
|
// Add the Camera Manipulator to the Viewer
|
||||||
|
mViewer->setCameraManipulator(keyswitchManipulator.get());
|
||||||
|
|
||||||
|
// Set the Scene Data
|
||||||
|
mViewer->setSceneData(mRoot.get());
|
||||||
|
|
||||||
|
// Realize the Viewer
|
||||||
|
mViewer->realize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cOSG::Render(void* ptr)
|
||||||
|
{
|
||||||
|
cOSG* osg = (cOSG*)ptr;
|
||||||
|
|
||||||
|
osgViewer::Viewer* viewer = osg->getViewer();
|
||||||
|
|
||||||
|
viewer->run();
|
||||||
|
|
||||||
|
// For some reason this has to be here to avoid issue:
|
||||||
|
// if you have multiple OSG windows up
|
||||||
|
// and you exit one then all stop rendering
|
||||||
|
AfxMessageBox("Exit Rendering Thread");
|
||||||
|
}
|
38
examples/osgviewerMFC/MFC_OSG.h
Normal file
38
examples/osgviewerMFC/MFC_OSG.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <osgViewer/Viewer>
|
||||||
|
#include <osgViewer/StatsHandler>
|
||||||
|
#include <osgViewer/GraphicsWindowWin32>
|
||||||
|
#include <osgGA/TrackballManipulator>
|
||||||
|
#include <osgGA/KeySwitchMatrixManipulator>
|
||||||
|
#include <osgDB/DatabasePager>
|
||||||
|
#include <osgDB/Registry>
|
||||||
|
#include <osgDB/ReadFile>
|
||||||
|
#include <osgUtil/Optimizer>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class cOSG
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cOSG(HWND hWnd);
|
||||||
|
~cOSG(){};
|
||||||
|
|
||||||
|
void InitOSG(std::string filename);
|
||||||
|
void InitManipulators(void);
|
||||||
|
void InitSceneGraph(void);
|
||||||
|
void InitCameraConfig(void);
|
||||||
|
void SetupWindow(void);
|
||||||
|
void SetupCamera(void);
|
||||||
|
static void Render(void* ptr);
|
||||||
|
|
||||||
|
osgViewer::Viewer* getViewer() { return mViewer.get(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_ModelName;
|
||||||
|
HWND m_hWnd;
|
||||||
|
osg::ref_ptr<osgViewer::Viewer> mViewer;
|
||||||
|
osg::ref_ptr<osg::Group> mRoot;
|
||||||
|
osg::ref_ptr<osg::Node> mModel;
|
||||||
|
osg::ref_ptr<osgGA::TrackballManipulator> trackball;
|
||||||
|
osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator;
|
||||||
|
};
|
145
examples/osgviewerMFC/MFC_OSG_MDI.cpp
Normal file
145
examples/osgviewerMFC/MFC_OSG_MDI.cpp
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
// MFC_OSG_MDI.cpp : Defines the class behaviors for the application.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG_MDI.h"
|
||||||
|
#include "MainFrm.h"
|
||||||
|
|
||||||
|
#include "ChildFrm.h"
|
||||||
|
#include "MFC_OSG_MDIDoc.h"
|
||||||
|
#include "MFC_OSG_MDIView.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIApp
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CMFC_OSG_MDIApp, CWinApp)
|
||||||
|
ON_COMMAND(ID_APP_ABOUT, &CMFC_OSG_MDIApp::OnAppAbout)
|
||||||
|
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIApp construction
|
||||||
|
|
||||||
|
CMFC_OSG_MDIApp::CMFC_OSG_MDIApp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The one and only CMFC_OSG_MDIApp object
|
||||||
|
|
||||||
|
CMFC_OSG_MDIApp theApp;
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIApp initialization
|
||||||
|
|
||||||
|
BOOL CMFC_OSG_MDIApp::InitInstance()
|
||||||
|
{
|
||||||
|
// InitCommonControlsEx() is required on Windows XP if an application
|
||||||
|
// manifest specifies use of ComCtl32.dll version 6 or later to enable
|
||||||
|
// visual styles. Otherwise, any window creation will fail.
|
||||||
|
INITCOMMONCONTROLSEX InitCtrls;
|
||||||
|
InitCtrls.dwSize = sizeof(InitCtrls);
|
||||||
|
// Set this to include all the common control classes you want to use
|
||||||
|
// in your application.
|
||||||
|
InitCtrls.dwICC = ICC_WIN95_CLASSES;
|
||||||
|
InitCommonControlsEx(&InitCtrls);
|
||||||
|
|
||||||
|
CWinApp::InitInstance();
|
||||||
|
|
||||||
|
// Standard initialization
|
||||||
|
// If you are not using these features and wish to reduce the size
|
||||||
|
// of your final executable, you should remove from the following
|
||||||
|
// the specific initialization routines you do not need
|
||||||
|
// Change the registry key under which our settings are stored
|
||||||
|
// TODO: You should modify this string to be something appropriate
|
||||||
|
// such as the name of your company or organization
|
||||||
|
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
|
||||||
|
LoadStdProfileSettings(4); // Load standard INI file options (including MRU)
|
||||||
|
// Register the application's document templates. Document templates
|
||||||
|
// serve as the connection between documents, frame windows and views
|
||||||
|
CMultiDocTemplate* pDocTemplate;
|
||||||
|
pDocTemplate = new CMultiDocTemplate(IDR_MFC_OSG_MDITYPE,
|
||||||
|
RUNTIME_CLASS(CMFC_OSG_MDIDoc),
|
||||||
|
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
|
||||||
|
RUNTIME_CLASS(CMFC_OSG_MDIView));
|
||||||
|
if (!pDocTemplate)
|
||||||
|
return FALSE;
|
||||||
|
AddDocTemplate(pDocTemplate);
|
||||||
|
|
||||||
|
// create main MDI Frame window
|
||||||
|
CMainFrame* pMainFrame = new CMainFrame;
|
||||||
|
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
|
||||||
|
{
|
||||||
|
delete pMainFrame;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
m_pMainWnd = pMainFrame;
|
||||||
|
// call DragAcceptFiles only if there's a suffix
|
||||||
|
// In an MDI app, this should occur immediately after setting m_pMainWnd
|
||||||
|
|
||||||
|
// Parse command line for standard shell commands, DDE, file open
|
||||||
|
CCommandLineInfo cmdInfo;
|
||||||
|
ParseCommandLine(cmdInfo);
|
||||||
|
|
||||||
|
// Don't display a new MDI child window during startup
|
||||||
|
if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
|
||||||
|
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
|
||||||
|
|
||||||
|
|
||||||
|
// Dispatch commands specified on the command line. Will return FALSE if
|
||||||
|
// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
|
||||||
|
if (!ProcessShellCommand(cmdInfo))
|
||||||
|
return FALSE;
|
||||||
|
// The main window has been initialized, so show and update it
|
||||||
|
pMainFrame->ShowWindow(m_nCmdShow);
|
||||||
|
pMainFrame->UpdateWindow();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// CAboutDlg dialog used for App About
|
||||||
|
|
||||||
|
class CAboutDlg : public CDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CAboutDlg();
|
||||||
|
|
||||||
|
// Dialog Data
|
||||||
|
enum { IDD = IDD_ABOUTBOX };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
protected:
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
||||||
|
{
|
||||||
|
CDialog::DoDataExchange(pDX);
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
// App command to run the dialog
|
||||||
|
void CMFC_OSG_MDIApp::OnAppAbout()
|
||||||
|
{
|
||||||
|
CAboutDlg aboutDlg;
|
||||||
|
aboutDlg.DoModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIApp message handlers
|
||||||
|
|
31
examples/osgviewerMFC/MFC_OSG_MDI.h
Normal file
31
examples/osgviewerMFC/MFC_OSG_MDI.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// MFC_OSG_MDI.h : main header file for the MFC_OSG_MDI application
|
||||||
|
//
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef __AFXWIN_H__
|
||||||
|
#error "include 'stdafx.h' before including this file for PCH"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "resource.h" // main symbols
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIApp:
|
||||||
|
// See MFC_OSG_MDI.cpp for the implementation of this class
|
||||||
|
//
|
||||||
|
|
||||||
|
class CMFC_OSG_MDIApp : public CWinApp
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CMFC_OSG_MDIApp();
|
||||||
|
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
public:
|
||||||
|
virtual BOOL InitInstance();
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
afx_msg void OnAppAbout();
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CMFC_OSG_MDIApp theApp;
|
382
examples/osgviewerMFC/MFC_OSG_MDI.rc
Normal file
382
examples/osgviewerMFC/MFC_OSG_MDI.rc
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
//Microsoft Visual C++ generated resource script.
|
||||||
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "afxres.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// TEXTINCLUDE
|
||||||
|
//
|
||||||
|
|
||||||
|
1 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"resource.h\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
2 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"#include ""afxres.h""\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
3 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||||
|
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||||
|
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||||
|
"\r\n"
|
||||||
|
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
||||||
|
"LANGUAGE 9, 1\r\n"
|
||||||
|
"#pragma code_page(1252)\r\n"
|
||||||
|
"#include ""res\\MFC_OSG_MDI.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
|
||||||
|
"#include ""afxres.rc"" // Standard components\r\n"
|
||||||
|
"#endif\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Icon
|
||||||
|
//
|
||||||
|
|
||||||
|
// Icon with lowest ID value placed first to ensure application icon
|
||||||
|
// remains consistent on all systems.
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
LANGUAGE 9, 1
|
||||||
|
#pragma code_page(1252)
|
||||||
|
IDR_MAINFRAME ICON "res\\MFC_OSG_MDI.ico"
|
||||||
|
IDR_MFC_OSG_MDITYPE ICON "res\\MFC_OSG_MDIDoc.ico"
|
||||||
|
#endif
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Bitmap
|
||||||
|
//
|
||||||
|
|
||||||
|
IDR_MAINFRAME BITMAP "res\\Toolbar.bmp"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Toolbar
|
||||||
|
//
|
||||||
|
|
||||||
|
IDR_MAINFRAME TOOLBAR 16, 15
|
||||||
|
BEGIN
|
||||||
|
BUTTON ID_FILE_NEW
|
||||||
|
BUTTON ID_FILE_OPEN
|
||||||
|
BUTTON ID_FILE_SAVE
|
||||||
|
SEPARATOR
|
||||||
|
BUTTON ID_EDIT_CUT
|
||||||
|
BUTTON ID_EDIT_COPY
|
||||||
|
BUTTON ID_EDIT_PASTE
|
||||||
|
SEPARATOR
|
||||||
|
BUTTON ID_FILE_PRINT
|
||||||
|
BUTTON ID_APP_ABOUT
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
LANGUAGE 9, 1
|
||||||
|
#pragma code_page(1252)
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Menu
|
||||||
|
//
|
||||||
|
|
||||||
|
IDR_MAINFRAME MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "&File"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&New\tCtrl+N", ID_FILE_NEW
|
||||||
|
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Recent File", ID_FILE_MRU_FILE1,GRAYED
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Close", ID_FILE_CLOSE
|
||||||
|
MENUITEM "E&xit", ID_APP_EXIT
|
||||||
|
END
|
||||||
|
POPUP "&View"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Toolbar", ID_VIEW_TOOLBAR
|
||||||
|
MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR
|
||||||
|
END
|
||||||
|
POPUP "&Help"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&About MFC_OSG_MDI...", ID_APP_ABOUT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
IDR_MFC_OSG_MDITYPE MENU
|
||||||
|
BEGIN
|
||||||
|
POPUP "&File"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&New\tCtrl+N", ID_FILE_NEW
|
||||||
|
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
|
||||||
|
MENUITEM "&Close", ID_FILE_CLOSE
|
||||||
|
MENUITEM "&Save\tCtrl+S", ID_FILE_SAVE
|
||||||
|
MENUITEM "Save &As...", ID_FILE_SAVE_AS
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Recent File", ID_FILE_MRU_FILE1,GRAYED
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xit", ID_APP_EXIT
|
||||||
|
END
|
||||||
|
POPUP "&Edit"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
||||||
|
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
|
||||||
|
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
||||||
|
END
|
||||||
|
POPUP "&View"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Toolbar", ID_VIEW_TOOLBAR
|
||||||
|
MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR
|
||||||
|
END
|
||||||
|
POPUP "&Window"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&New Window", ID_WINDOW_NEW
|
||||||
|
MENUITEM "&Cascade", ID_WINDOW_CASCADE
|
||||||
|
MENUITEM "&Tile", ID_WINDOW_TILE_HORZ
|
||||||
|
MENUITEM "&Arrange Icons", ID_WINDOW_ARRANGE
|
||||||
|
MENUITEM "S&plit", ID_WINDOW_SPLIT
|
||||||
|
END
|
||||||
|
POPUP "&Help"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&About MFC_OSG_MDI...", ID_APP_ABOUT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Accelerator
|
||||||
|
//
|
||||||
|
|
||||||
|
IDR_MAINFRAME ACCELERATORS
|
||||||
|
BEGIN
|
||||||
|
"N", ID_FILE_NEW, VIRTKEY,CONTROL
|
||||||
|
"O", ID_FILE_OPEN, VIRTKEY,CONTROL
|
||||||
|
"S", ID_FILE_SAVE, VIRTKEY,CONTROL
|
||||||
|
"Z", ID_EDIT_UNDO, VIRTKEY,CONTROL
|
||||||
|
"X", ID_EDIT_CUT, VIRTKEY,CONTROL
|
||||||
|
"C", ID_EDIT_COPY, VIRTKEY,CONTROL
|
||||||
|
"V", ID_EDIT_PASTE, VIRTKEY,CONTROL
|
||||||
|
VK_BACK, ID_EDIT_UNDO, VIRTKEY,ALT
|
||||||
|
VK_DELETE, ID_EDIT_CUT, VIRTKEY,SHIFT
|
||||||
|
VK_INSERT, ID_EDIT_COPY, VIRTKEY,CONTROL
|
||||||
|
VK_INSERT, ID_EDIT_PASTE, VIRTKEY,SHIFT
|
||||||
|
VK_F6, ID_NEXT_PANE, VIRTKEY
|
||||||
|
VK_F6, ID_PREV_PANE, VIRTKEY,SHIFT
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Dialog
|
||||||
|
//
|
||||||
|
|
||||||
|
IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
|
||||||
|
CAPTION "About MFC_OSG_MDI"
|
||||||
|
STYLE DS_MODALFRAME | DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
|
||||||
|
LTEXT "MFC_OSG_MDI Version 1.0",IDC_STATIC,40,10,119,8,
|
||||||
|
SS_NOPREFIX
|
||||||
|
LTEXT "Copyright (C) 2007",IDC_STATIC,40,25,119,8
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
IDR_MAINFRAME DIALOGEX 0, 0, 330, 16
|
||||||
|
STYLE DS_SHELLFONT | WS_CHILD
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "TODO: layout dialog bar ",IDC_STATIC,12,4,
|
||||||
|
300,8
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Version
|
||||||
|
//
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,1
|
||||||
|
PRODUCTVERSION 1,0,0,1
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x4L
|
||||||
|
FILETYPE 0x1L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904e4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "TODO: <Company name>"
|
||||||
|
VALUE "FileDescription", "TODO: <File description>"
|
||||||
|
VALUE "FileVersion", "1.0.0.1"
|
||||||
|
VALUE "InternalName", "MFC_OSG_MDI.exe"
|
||||||
|
VALUE "LegalCopyright", "TODO: (c) <Company name>. All rights reserved."
|
||||||
|
VALUE "OriginalFilename","MFC_OSG_MDI.exe"
|
||||||
|
VALUE "ProductName", "TODO: <Product name>"
|
||||||
|
VALUE "ProductVersion", "1.0.0.1"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x0409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// DESIGNINFO
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
GUIDELINES DESIGNINFO
|
||||||
|
BEGIN
|
||||||
|
IDD_ABOUTBOX, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 228
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 48
|
||||||
|
END
|
||||||
|
END
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// String Table
|
||||||
|
//
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
// Non-mac-targeting apps remove the two extra substrings
|
||||||
|
IDR_MAINFRAME "MFC_OSG_MDI"
|
||||||
|
IDR_MFC_OSG_MDITYPE "\nMFC_OSG_MDI\nMFC_OSG_MDI\n\n\nMFCOSGMDI.Document\nMFC_OSG_MDI.Document"
|
||||||
|
END
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
AFX_IDS_APP_TITLE "MFC_OSG_MDI"
|
||||||
|
AFX_IDS_IDLEMESSAGE "Ready"
|
||||||
|
END
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
ID_INDICATOR_EXT "EXT"
|
||||||
|
ID_INDICATOR_CAPS "CAP"
|
||||||
|
ID_INDICATOR_NUM "NUM"
|
||||||
|
ID_INDICATOR_SCRL "SCRL"
|
||||||
|
ID_INDICATOR_OVR "OVR"
|
||||||
|
ID_INDICATOR_REC "REC"
|
||||||
|
END
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
ID_FILE_NEW "Create a new document\nNew"
|
||||||
|
ID_FILE_OPEN "Open an existing document\nOpen"
|
||||||
|
ID_FILE_CLOSE "Close the active document\nClose"
|
||||||
|
ID_FILE_SAVE "Save the active document\nSave"
|
||||||
|
ID_FILE_SAVE_AS "Save the active document with a new name\nSave As"
|
||||||
|
ID_APP_ABOUT "Display program information, version number and copyright\nAbout"
|
||||||
|
ID_APP_EXIT "Quit the application; prompts to save documents\nExit"
|
||||||
|
ID_FILE_MRU_FILE1 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE2 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE3 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE4 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE5 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE6 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE7 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE8 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE9 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE10 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE11 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE12 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE13 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE14 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE15 "Open this document"
|
||||||
|
ID_FILE_MRU_FILE16 "Open this document"
|
||||||
|
ID_NEXT_PANE "Switch to the next window pane\nNext Pane"
|
||||||
|
ID_PREV_PANE "Switch back to the previous window pane\nPrevious Pane"
|
||||||
|
ID_WINDOW_NEW "Open another window for the active document\nNew Window"
|
||||||
|
ID_WINDOW_ARRANGE "Arrange icons at the bottom of the window\nArrange Icons"
|
||||||
|
ID_WINDOW_CASCADE "Arrange windows so they overlap\nCascade Windows"
|
||||||
|
ID_WINDOW_TILE_HORZ "Arrange windows as non-overlapping tiles\nTile Windows"
|
||||||
|
ID_WINDOW_TILE_VERT "Arrange windows as non-overlapping tiles\nTile Windows"
|
||||||
|
ID_WINDOW_SPLIT "Split the active window into panes\nSplit"
|
||||||
|
ID_EDIT_CLEAR "Erase the selection\nErase"
|
||||||
|
ID_EDIT_CLEAR_ALL "Erase everything\nErase All"
|
||||||
|
ID_EDIT_COPY "Copy the selection and put it on the Clipboard\nCopy"
|
||||||
|
ID_EDIT_CUT "Cut the selection and put it on the Clipboard\nCut"
|
||||||
|
ID_EDIT_FIND "Find the specified text\nFind"
|
||||||
|
ID_EDIT_PASTE "Insert Clipboard contents\nPaste"
|
||||||
|
ID_EDIT_REPEAT "Repeat the last action\nRepeat"
|
||||||
|
ID_EDIT_REPLACE "Replace specific text with different text\nReplace"
|
||||||
|
ID_EDIT_SELECT_ALL "Select the entire document\nSelect All"
|
||||||
|
ID_EDIT_UNDO "Undo the last action\nUndo"
|
||||||
|
ID_EDIT_REDO "Redo the previously undone action\nRedo"
|
||||||
|
ID_VIEW_TOOLBAR "Show or hide the toolbar\nToggle ToolBar"
|
||||||
|
ID_VIEW_STATUS_BAR "Show or hide the status bar\nToggle StatusBar"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
AFX_IDS_SCSIZE "Change the window size"
|
||||||
|
AFX_IDS_SCMOVE "Change the window position"
|
||||||
|
AFX_IDS_SCMINIMIZE "Reduce the window to an icon"
|
||||||
|
AFX_IDS_SCMAXIMIZE "Enlarge the window to full size"
|
||||||
|
AFX_IDS_SCNEXTWINDOW "Switch to the next document window"
|
||||||
|
AFX_IDS_SCPREVWINDOW "Switch to the previous document window"
|
||||||
|
AFX_IDS_SCCLOSE "Close the active window and prompts to save the documents"
|
||||||
|
AFX_IDS_SCRESTORE "Restore the window to normal size"
|
||||||
|
AFX_IDS_SCTASKLIST "Activate Task List"
|
||||||
|
AFX_IDS_MDICHILD "Activate this window"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
#define _AFX_NO_OLE_RESOURCES
|
||||||
|
#define _AFX_NO_TRACKER_RESOURCES
|
||||||
|
#define _AFX_NO_PROPERTY_RESOURCES
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
LANGUAGE 9, 1
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#include "res\\MFC_OSG_MDI.rc2" // non-Microsoft Visual C++ edited resources
|
||||||
|
#include "afxres.rc" // Standard components
|
||||||
|
#endif
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
314
examples/osgviewerMFC/MFC_OSG_MDI.vcproj
Normal file
314
examples/osgviewerMFC/MFC_OSG_MDI.vcproj
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="MFC_OSG_MDI"
|
||||||
|
ProjectGUID="{EEDBE368-83F3-4142-B876-F4EF090F07D8}"
|
||||||
|
RootNamespace="MFC_OSG_MDI"
|
||||||
|
Keyword="MFCProj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
UseOfMFC="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="false"
|
||||||
|
ValidateParameters="false"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories=""$(OSG_Ot_VPB-1.2)\include""
|
||||||
|
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
UsePrecompiledHeader="2"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
AdditionalIncludeDirectories="$(IntDir)"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="osgd.lib osgDBd.lib osgGAd.lib osgUtild.lib osgViewerd.lib OpenThreadsd.lib"
|
||||||
|
LinkIncremental="2"
|
||||||
|
AdditionalLibraryDirectories="$(OSG_Ot_VPB-1.2)\lib"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
UseOfMFC="2"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
MkTypLibCompatible="false"
|
||||||
|
ValidateParameters="false"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories=""$(OSG_Ot_VPB-1.2)\include""
|
||||||
|
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
|
||||||
|
MinimalRebuild="false"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
UsePrecompiledHeader="2"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
AdditionalIncludeDirectories="$(IntDir)"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="osg.lib osgDB.lib osgGA.lib osgUtil.lib osgViewer.lib OpenThreads.lib"
|
||||||
|
LinkIncremental="1"
|
||||||
|
AdditionalLibraryDirectories="$(OSG_Ot_VPB-1.2)\lib"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ChildFrm.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MainFrm.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDI.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDIDoc.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDIView.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\stdafx.cpp"
|
||||||
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
UsePrecompiledHeader="1"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
UsePrecompiledHeader="1"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||||
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ChildFrm.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MainFrm.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDI.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDIDoc.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDIView.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Resource.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\stdafx.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||||
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\res\MFC_OSG_MDI.ico"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MFC_OSG_MDI.rc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\res\MFC_OSG_MDI.rc2"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\res\MFC_OSG_MDIDoc.ico"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\res\Toolbar.bmp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ReadMe.txt"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
73
examples/osgviewerMFC/MFC_OSG_MDIDoc.cpp
Normal file
73
examples/osgviewerMFC/MFC_OSG_MDIDoc.cpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
// MFC_OSG_MDIDoc.cpp : implementation of the CMFC_OSG_MDIDoc class
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG_MDI.h"
|
||||||
|
|
||||||
|
#include "MFC_OSG_MDIDoc.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIDoc
|
||||||
|
|
||||||
|
IMPLEMENT_DYNCREATE(CMFC_OSG_MDIDoc, CDocument)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CMFC_OSG_MDIDoc, CDocument)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIDoc construction/destruction
|
||||||
|
|
||||||
|
CMFC_OSG_MDIDoc::CMFC_OSG_MDIDoc()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CMFC_OSG_MDIDoc::~CMFC_OSG_MDIDoc()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CMFC_OSG_MDIDoc::OnOpenDocument(LPCTSTR lpszPathName)
|
||||||
|
{
|
||||||
|
m_csFileName = lpszPathName;
|
||||||
|
|
||||||
|
if (!CDocument::OnOpenDocument(lpszPathName))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIDoc serialization
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIDoc::Serialize(CArchive& ar)
|
||||||
|
{
|
||||||
|
if (ar.IsStoring())
|
||||||
|
{
|
||||||
|
// TODO: add storing code here
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// TODO: add loading code here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIDoc diagnostics
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
void CMFC_OSG_MDIDoc::AssertValid() const
|
||||||
|
{
|
||||||
|
CDocument::AssertValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIDoc::Dump(CDumpContext& dc) const
|
||||||
|
{
|
||||||
|
CDocument::Dump(dc);
|
||||||
|
}
|
||||||
|
#endif //_DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
// CMFC_OSG_MDIDoc commands
|
42
examples/osgviewerMFC/MFC_OSG_MDIDoc.h
Normal file
42
examples/osgviewerMFC/MFC_OSG_MDIDoc.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// MFC_OSG_MDIDoc.h : interface of the CMFC_OSG_MDIDoc class
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
class CMFC_OSG_MDIDoc : public CDocument
|
||||||
|
{
|
||||||
|
protected: // create from serialization only
|
||||||
|
CMFC_OSG_MDIDoc();
|
||||||
|
DECLARE_DYNCREATE(CMFC_OSG_MDIDoc)
|
||||||
|
|
||||||
|
// Attributes
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Operations
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
public:
|
||||||
|
virtual void Serialize(CArchive& ar);
|
||||||
|
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
|
||||||
|
CString GetFileName() const { return m_csFileName; }
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
public:
|
||||||
|
virtual ~CMFC_OSG_MDIDoc();
|
||||||
|
#ifdef _DEBUG
|
||||||
|
virtual void AssertValid() const;
|
||||||
|
virtual void Dump(CDumpContext& dc) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protected:
|
||||||
|
CString m_csFileName;
|
||||||
|
|
||||||
|
// Generated message map functions
|
||||||
|
protected:
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
122
examples/osgviewerMFC/MFC_OSG_MDIView.cpp
Normal file
122
examples/osgviewerMFC/MFC_OSG_MDIView.cpp
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
// MFC_OSG_MDIView.cpp : implementation of the CMFC_OSG_MDIView class
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG_MDI.h"
|
||||||
|
#include "MFC_OSG_MDIDoc.h"
|
||||||
|
#include "MFC_OSG_MDIView.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
IMPLEMENT_DYNCREATE(CMFC_OSG_MDIView, CView)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CMFC_OSG_MDIView, CView)
|
||||||
|
ON_WM_CREATE()
|
||||||
|
ON_WM_DESTROY()
|
||||||
|
ON_WM_KEYDOWN()
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
CMFC_OSG_MDIView::CMFC_OSG_MDIView() :
|
||||||
|
mOSG(0L)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CMFC_OSG_MDIView::~CMFC_OSG_MDIView()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CMFC_OSG_MDIView::PreCreateWindow(CREATESTRUCT& cs)
|
||||||
|
{
|
||||||
|
return CView::PreCreateWindow(cs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIView::OnDraw(CDC* /*pDC*/)
|
||||||
|
{
|
||||||
|
CMFC_OSG_MDIDoc* pDoc = GetDocument();
|
||||||
|
ASSERT_VALID(pDoc);
|
||||||
|
if (!pDoc)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
void CMFC_OSG_MDIView::AssertValid() const
|
||||||
|
{
|
||||||
|
CView::AssertValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIView::Dump(CDumpContext& dc) const
|
||||||
|
{
|
||||||
|
CView::Dump(dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
CMFC_OSG_MDIDoc* CMFC_OSG_MDIView::GetDocument() const // non-debug version is inline
|
||||||
|
{
|
||||||
|
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFC_OSG_MDIDoc)));
|
||||||
|
return (CMFC_OSG_MDIDoc*)m_pDocument;
|
||||||
|
}
|
||||||
|
#endif //_DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
int CMFC_OSG_MDIView::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||||
|
{
|
||||||
|
// Let MFC create the window before OSG
|
||||||
|
if (CView::OnCreate(lpCreateStruct) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// Now that the window is created setup OSG
|
||||||
|
mOSG = new cOSG(m_hWnd);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIView::OnDestroy()
|
||||||
|
{
|
||||||
|
// Make sure OSG was created before we try to close it.
|
||||||
|
if(mOSG)
|
||||||
|
{
|
||||||
|
// Force osg Viewer to shut down
|
||||||
|
mOSG->getViewer()->setDone(true);
|
||||||
|
|
||||||
|
// Wait while the Viewer closes
|
||||||
|
while(!mOSG->getViewer()->done())
|
||||||
|
{
|
||||||
|
Sleep(0); // Allow others processor time
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove mOSG
|
||||||
|
delete mOSG;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destroy Window
|
||||||
|
CView::OnDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIView::OnInitialUpdate()
|
||||||
|
{
|
||||||
|
CView::OnInitialUpdate();
|
||||||
|
|
||||||
|
// Get Filename from DocumentOpen Dialog
|
||||||
|
CString csFileName = GetDocument()->GetFileName();
|
||||||
|
|
||||||
|
// Init the osg class
|
||||||
|
mOSG->InitOSG(csFileName.GetString());
|
||||||
|
|
||||||
|
// Start the thread to do OSG Rendering
|
||||||
|
_beginthread(&cOSG::Render, 0, mOSG);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMFC_OSG_MDIView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
|
||||||
|
{
|
||||||
|
// Pass Key Presses into OSG
|
||||||
|
mOSG->getViewer()->getEventQueue()->keyPress(nChar);
|
||||||
|
|
||||||
|
// Close Window on Escape Key
|
||||||
|
if(nChar == VK_ESCAPE)
|
||||||
|
{
|
||||||
|
GetParent()->SendMessage(WM_CLOSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
51
examples/osgviewerMFC/MFC_OSG_MDIView.h
Normal file
51
examples/osgviewerMFC/MFC_OSG_MDIView.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
// MFC_OSG_MDIView.h : interface of the CMFC_OSG_MDIView class
|
||||||
|
//
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "MFC_OSG.h"
|
||||||
|
|
||||||
|
class CMFC_OSG_MDIView : public CView
|
||||||
|
{
|
||||||
|
protected: // create from serialization only
|
||||||
|
CMFC_OSG_MDIView();
|
||||||
|
DECLARE_DYNCREATE(CMFC_OSG_MDIView)
|
||||||
|
|
||||||
|
// Attributes
|
||||||
|
public:
|
||||||
|
CMFC_OSG_MDIDoc* GetDocument() const;
|
||||||
|
|
||||||
|
// Operations
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
public:
|
||||||
|
virtual void OnDraw(CDC* pDC); // overridden to draw this view
|
||||||
|
virtual void OnInitialUpdate();
|
||||||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
public:
|
||||||
|
virtual ~CMFC_OSG_MDIView();
|
||||||
|
#ifdef _DEBUG
|
||||||
|
virtual void AssertValid() const;
|
||||||
|
virtual void Dump(CDumpContext& dc) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protected:
|
||||||
|
cOSG* mOSG;
|
||||||
|
|
||||||
|
// Generated message map functions
|
||||||
|
protected:
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
|
||||||
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||||
|
afx_msg void OnDestroy();
|
||||||
|
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifndef _DEBUG // debug version in MFC_OSG_MDIView.cpp
|
||||||
|
inline CMFC_OSG_MDIDoc* CMFC_OSG_MDIView::GetDocument() const
|
||||||
|
{ return reinterpret_cast<CMFC_OSG_MDIDoc*>(m_pDocument); }
|
||||||
|
#endif
|
||||||
|
|
114
examples/osgviewerMFC/MainFrm.cpp
Normal file
114
examples/osgviewerMFC/MainFrm.cpp
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
// MainFrm.cpp : implementation of the CMainFrame class
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MFC_OSG_MDI.h"
|
||||||
|
|
||||||
|
#include "MainFrm.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CMainFrame
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
|
||||||
|
ON_WM_CREATE()
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
static UINT indicators[] =
|
||||||
|
{
|
||||||
|
ID_SEPARATOR, // status line indicator
|
||||||
|
ID_INDICATOR_CAPS,
|
||||||
|
ID_INDICATOR_NUM,
|
||||||
|
ID_INDICATOR_SCRL,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// CMainFrame construction/destruction
|
||||||
|
|
||||||
|
CMainFrame::CMainFrame()
|
||||||
|
{
|
||||||
|
m_bAutoMenuEnable = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CMainFrame::~CMainFrame()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||||
|
{
|
||||||
|
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT) ||
|
||||||
|
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
|
||||||
|
{
|
||||||
|
TRACE0("Failed to create toolbar\n");
|
||||||
|
return -1; // fail to create
|
||||||
|
}
|
||||||
|
if (!m_wndDlgBar.Create(this, IDR_MAINFRAME,
|
||||||
|
CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR))
|
||||||
|
{
|
||||||
|
TRACE0("Failed to create dialogbar\n");
|
||||||
|
return -1; // fail to create
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_wndReBar.Create(this) ||
|
||||||
|
!m_wndReBar.AddBar(&m_wndToolBar) ||
|
||||||
|
!m_wndReBar.AddBar(&m_wndDlgBar))
|
||||||
|
{
|
||||||
|
TRACE0("Failed to create rebar\n");
|
||||||
|
return -1; // fail to create
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_wndStatusBar.Create(this) ||
|
||||||
|
!m_wndStatusBar.SetIndicators(indicators,
|
||||||
|
sizeof(indicators)/sizeof(UINT)))
|
||||||
|
{
|
||||||
|
TRACE0("Failed to create status bar\n");
|
||||||
|
return -1; // fail to create
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Remove this if you don't want tool tips
|
||||||
|
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
|
||||||
|
CBRS_TOOLTIPS | CBRS_FLYBY);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
||||||
|
{
|
||||||
|
if( !CMDIFrameWnd::PreCreateWindow(cs) )
|
||||||
|
return FALSE;
|
||||||
|
// TODO: Modify the Window class or styles here by modifying
|
||||||
|
// the CREATESTRUCT cs
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CMainFrame diagnostics
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
void CMainFrame::AssertValid() const
|
||||||
|
{
|
||||||
|
CMDIFrameWnd::AssertValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMainFrame::Dump(CDumpContext& dc) const
|
||||||
|
{
|
||||||
|
CMDIFrameWnd::Dump(dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //_DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
// CMainFrame message handlers
|
||||||
|
|
||||||
|
|
||||||
|
|
44
examples/osgviewerMFC/MainFrm.h
Normal file
44
examples/osgviewerMFC/MainFrm.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// MainFrm.h : interface of the CMainFrame class
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class CMainFrame : public CMDIFrameWnd
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC(CMainFrame)
|
||||||
|
public:
|
||||||
|
CMainFrame();
|
||||||
|
|
||||||
|
// Attributes
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Operations
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
public:
|
||||||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
public:
|
||||||
|
virtual ~CMainFrame();
|
||||||
|
#ifdef _DEBUG
|
||||||
|
virtual void AssertValid() const;
|
||||||
|
virtual void Dump(CDumpContext& dc) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protected: // control bar embedded members
|
||||||
|
CStatusBar m_wndStatusBar;
|
||||||
|
CToolBar m_wndToolBar;
|
||||||
|
CReBar m_wndReBar;
|
||||||
|
CDialogBar m_wndDlgBar;
|
||||||
|
|
||||||
|
// Generated message map functions
|
||||||
|
protected:
|
||||||
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||||
|
afx_msg void OnTimer(UINT nIDEvent);
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
9
examples/osgviewerMFC/ReadMe.txt
Normal file
9
examples/osgviewerMFC/ReadMe.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
This project is a very simple implementation of the Microsoft Multiple Document/View Architecture.
|
||||||
|
The only changes needed to compile the project should be to modify the include paths for headers
|
||||||
|
and librarys. This project was written to show how to implement the new osgViewer library with MFC.
|
||||||
|
|
||||||
|
There is only one problem that I have seen to this point and that is when you have multiple OSG documents
|
||||||
|
open and then you close one of them then all remaining OSG documents quit rendering. I have a small work
|
||||||
|
around in the code that calls AfxMessageBox when the closing windows tread exits and this keeps the other
|
||||||
|
windows rendering correctly. Not sure what the problem is at this point so if anyone finds the cause and
|
||||||
|
has a fix please update the code.
|
18
examples/osgviewerMFC/Resource.h
Normal file
18
examples/osgviewerMFC/Resource.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Visual C++ generated include file.
|
||||||
|
// Used by MFC_OSG_MDI.rc
|
||||||
|
//
|
||||||
|
#define IDD_ABOUTBOX 100
|
||||||
|
#define IDR_MAINFRAME 128
|
||||||
|
#define IDR_MFC_OSG_MDITYPE 129
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 130
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||||
|
#endif
|
||||||
|
#endif
|
BIN
examples/osgviewerMFC/res/MFC_OSG_MDI.ico
Normal file
BIN
examples/osgviewerMFC/res/MFC_OSG_MDI.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
13
examples/osgviewerMFC/res/MFC_OSG_MDI.rc2
Normal file
13
examples/osgviewerMFC/res/MFC_OSG_MDI.rc2
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// MFC_OSG_MDI.RC2 - resources Microsoft Visual C++ does not edit directly
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#error this file is not editable by Microsoft Visual C++
|
||||||
|
#endif //APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Add manually edited resources here...
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
BIN
examples/osgviewerMFC/res/MFC_OSG_MDIDoc.ico
Normal file
BIN
examples/osgviewerMFC/res/MFC_OSG_MDIDoc.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
examples/osgviewerMFC/res/Toolbar.bmp
Normal file
BIN
examples/osgviewerMFC/res/Toolbar.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
7
examples/osgviewerMFC/stdafx.cpp
Normal file
7
examples/osgviewerMFC/stdafx.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// stdafx.cpp : source file that includes just the standard includes
|
||||||
|
// MFC_OSG_MDI.pch will be the pre-compiled header
|
||||||
|
// stdafx.obj will contain the pre-compiled type information
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
|
64
examples/osgviewerMFC/stdafx.h
Normal file
64
examples/osgviewerMFC/stdafx.h
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
// stdafx.h : include file for standard system include files,
|
||||||
|
// or project specific include files that are used frequently,
|
||||||
|
// but are changed infrequently
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef _SECURE_ATL
|
||||||
|
#define _SECURE_ATL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef VC_EXTRALEAN
|
||||||
|
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Modify the following defines if you have to target a platform prior to the ones specified below.
|
||||||
|
// Refer to MSDN for the latest info on corresponding values for different platforms.
|
||||||
|
#ifndef WINVER // Allow use of features specific to Windows XP or later.
|
||||||
|
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
|
||||||
|
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
|
||||||
|
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
|
||||||
|
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
|
||||||
|
|
||||||
|
// turns off MFC's hiding of some common and often safely ignored warning messages
|
||||||
|
#define _AFX_ALL_WARNINGS
|
||||||
|
|
||||||
|
#include <afxwin.h> // MFC core and standard components
|
||||||
|
#include <afxext.h> // MFC extensions
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _AFX_NO_OLE_SUPPORT
|
||||||
|
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
|
||||||
|
#endif
|
||||||
|
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||||
|
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||||
|
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||||
|
|
||||||
|
#include <process.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _UNICODE
|
||||||
|
#if defined _M_IX86
|
||||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||||
|
#elif defined _M_IA64
|
||||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||||
|
#elif defined _M_X64
|
||||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||||
|
#else
|
||||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user