我要发帖 回复

高级会员

34

主题

1181

积分

0

专家分

混世牛魔王

兴趣点(最多三项):

视景仿真

私信
发表时间 : 2010-12-17 13:53:58 | 浏览 : 1036    评论 : 3
本帖最后由 kangaroo 于 2010-12-17 01:55 PM 编辑

UINT runVpApp( LPVOID pParam )
{

        int result; // vsgu::SUCCESS or vsgu::FAILURE
        // pParam is actually a pointer to a vrVpView
        vrVPView* pOwner = (vrVPView*)pParam;

        assert(vpWindow::size() != 0);

        pOwner->vpWin = *vpWindow::begin();
        pOwner->vpWin->setParent(pOwner->GetSafeHwnd());
        pOwner->vpWin->setBorderEnable(false);
        pOwner->vpWin->setFullScreenEnable(true);

        while (pOwner->getContinueRunning() )
        {                               
        }         
        return 0;
}
判断问题出在红字标示部分,setParent(nPower->GetSafeHwnd());  估计这句话原因,可是不加这句话vega prime窗口和单文档窗口分离。

有人弄出mfc vp2.2  release版本正常运行的吗?解答一下在这里谢过了。

最近VR访客

sichuanwww 评论于2010-12-17 14:51:26
关注中。
努力挣钱,快乐生活!
administrator专家组 评论于2010-12-20 16:18:30
vp+mfc的原理 在于:  
1.vp本身是有一个3D窗口的,在控制台下  你看见的就是这个窗口,这个窗口是不可能没有的
2. 把vp嵌入到mfc中的原理就是 将这个vp三维窗口附着到mfc的某个窗口上,对于sdi单文档界面
  就是要把vp窗口附着到 单文档界面中的视图上去,
  
拿单文档举例:
   GetSafeHwnd());  就是要取得视图的窗口句柄(视图也是一种窗口)

pOwner->vpWin = *vpWindow::begin(); 就是找到vp自带的三维窗口

  然后 pOwner->vpWin->setParent(pOwner->GetSafeHwnd());   
意思就是将 视图这个窗口作为vp窗口的父窗口 ,这样的话 ,视图关闭,vp窗口也就关了
产生了一定的联动,vp窗口会继承一部分视图这个窗口的属性

但是有个问题了:vp窗口是有边框和大小的,这些需要处理:
pOwner->vpWin->setBorderEnable(false);  除掉vp窗口的边框
        pOwner->vpWin->setFullScreenEnable(true); 让vp窗口大一点,以便占满整个视图窗口
sichuanwww 评论于2010-12-21 14:33:39
好像vp2.2和VP2有一些不同。
努力挣钱,快乐生活!

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

GMT+8, 2022-8-12 11:04 AM

返回顶部