我要发帖 回复

新手上路

5

主题

17

积分

0

专家分

:

私信
发表时间 : 2011-5-9 15:03:22 | 浏览 : 888    评论 : 3
这是头文件
// VpMFCView.h : CVpMFCView 类的接口
//

#include <vsgu.h>
#include <vp.h>
#include <vpSearchPath.h>
#include <vpApp.h>
#include <vuAllocTracer.h>
//vuAllocTracer tracer(true, true);



#pragma once


class CVpMFCView : public CView
{
protected: // 仅从序列化创建
        CVpMFCView();
        DECLARE_DYNCREATE(CVpMFCView)

// 属性
public:
        CVpMFCDoc* GetDocument() const;
        BOOL m_bVPStarted;
        BOOL m_bEndVPThread;
        CWinThread * vegaThread;

// 操作
public:

// 重写
public:
        virtual void OnDraw(CDC* pDC);  // 重写以绘制该视图
        virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
        virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
        virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
        virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

// 实现
public:
        virtual ~CVpMFCView();
#ifdef _DEBUG
        virtual void AssertValid() const;
        virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// 生成的消息映射函数
protected:
        DECLARE_MESSAGE_MAP()
public:
        afx_msg void OnVpstart();
};

#ifndef _DEBUG  // VpMFCView.cpp 中的调试版本
inline CVpMFCDoc* CVpMFCView::GetDocument() const
   { return reinterpret_cast<CVpMFCDoc*>(m_pDocument); }
#endif


这是CPP文件
// VpMFCView.cpp : CVpMFCView 类的实现
//

#include "stdafx.h"
#include "VpMFC.h"

#include "VpMFCDoc.h"
#include "VpMFCView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CVpMFCView

IMPLEMENT_DYNCREATE(CVpMFCView, CView)

BEGIN_MESSAGE_MAP(CVpMFCView, CView)
        // 标准打印命令
        ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
        ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
        ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
        ON_COMMAND(ID_VPSTART, &CVpMFCView::OnVpstart)
END_MESSAGE_MAP()

// CVpMFCView 构造/析构

CVpMFCView::CVpMFCView()
{
        // TODO: 在此处添加构造代码

   m_bVPStarted == FALSE;
    m_bEndVPThread = TRUE;

}

CVpMFCView::~CVpMFCView()
{
         if (m_bVPStarted == TRUE)   
        {
                m_bEndVPThread = TRUE;
                WaitForSingleObject( vegaThread->m_hThread, INFINITE );
        }
         CView::~CView();         

}

BOOL CVpMFCView::PreCreateWindow(CREATESTRUCT& cs)
{
        // TODO: 在此处通过修改
        //  CREATESTRUCT cs 来修改窗口类或样式

        return CView::PreCreateWindow(cs);
}

// CVpMFCView 绘制

void CVpMFCView::OnDraw(CDC* /*pDC*/)
{
        CVpMFCDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        if (!pDoc)
                return;

        // TODO: 在此处为本机数据添加绘制代码
}


// CVpMFCView 打印

BOOL CVpMFCView::OnPreparePrinting(CPrintInfo* pInfo)
{
        // 默认准备
        return DoPreparePrinting(pInfo);
}

void CVpMFCView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
        // TODO: 添加额外的打印前进行的初始化过程
}

void CVpMFCView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
        // TODO: 添加打印后进行的清除过程
}


// CVpMFCView 诊断

#ifdef _DEBUG
void CVpMFCView::AssertValid() const
{
        CView::AssertValid();
}

void CVpMFCView::Dump(CDumpContext& dc) const
{
        CView::Dump(dc);
}

CVpMFCDoc* CVpMFCView::GetDocument() const // 非调试版本是内联的
{
        ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVpMFCDoc)));
        return (CVpMFCDoc*)m_pDocument;
}
#endif //_DEBUG

UINT vpWorkThread( LPVOID pParam )
{     
      CVpMFCView* pView = (CVpMFCView*)pParam;
      vp::initialize(__argc, __argv);
      vpKernel::instance()->define("C:\Program Files\MultiGen-Paradigm\resources\samples\vegaprime\vp\vp_simple ");
      vpKernel::instance()->configure();
      vpWindow* vpWin = *vpWindow::begin();
      vpWin->setParent(pView->GetSafeHwnd());
      vpWin->setBorderEnable(false);
      vpWin->setFullScreenEnable(true);
   // vpWin->setKeyboardFunc(keyboardHandler,pParam);
       vpWin->open();
           ::SetFocus(vpWin->getWindow());
    while (vpKernel::instance()->beginFrame() != 0)
          {
            vpKernel::instance()->endFrame();
            if (pView->m_bEndVPThread == TRUE)   
             {
                vpKernel::instance()->unconfigure();
                vp::shutdown();//?D?1vp         
                return 0;
             }
           }         
    return 0;
}



// CVpMFCView 消息处理程序

void CVpMFCView::OnVpstart()
{
        // TODO: Add your command handler code here
         if (m_bVPStarted == FALSE)   
        {
            m_bEndVPThread = FALSE;
            m_bVPStarted = TRUE;
            vegaThread = AfxBeginThread( vpWorkThread, this );               
        }         

}


编译通过,在菜单中选择"vp运行"程序没有反应



程序是在vs2005.net中 vp是2.2

最近VR访客

kangaroo 评论于2011-5-12 23:19:55
没有加载ACF文件
     探索视景仿真之发展,超越自我!
xzuoyong 评论于2011-5-19 08:27:51
谢谢 不过如何加载acf文件夹
xzuoyong 评论于2011-5-19 09:04:06
vpKernel::instance()->define("C:\Program Files\MultiGen-Paradigm\resources\samples\vegaprime\vp\vp_simple ");
vpKernel::instance()->configure();
这算不算加载acf文件

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2022-8-10 06:45 AM

返回顶部