- 积分
- 17
- 帖子
- 14
- 主题
- 5
- 精华
- 0
- 最后登录
- 2018-1-3
- 在线时间
- 29 小时
- 私信
|
发表时间 : 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 |
|