对于仿真环境的控制,某些时候需要单独全屏显示仿真场景。仿真场景的全屏显示,主要包含两个步骤:
一是vpWindow的属性设置,这里主要是关闭其全屏属性,以便于后面根据屏幕尺寸改变vpWindow的尺寸。
vpWindow * vpWin= * vpWindow::begin();
vpWin->setFullScreenEnable(false);
二是根据需要获得屏幕的尺寸,设置仿真场景的尺寸:
int width=::GetSystemMetrics(SM_CXSCREEN);
int height=::GetSystemMetrics(SM_CYSCREEN);
::MoveWindow(PublicMember::CTS_MainWindow,0,0,width,height,true);
::MoveWindow(PublicMember::CTS_RunningWindow,0,0,width,height,true);
vpWindow * vpWin= * vpWindow::begin();
vpWin->setSize(width,height);
有了这两个步骤,就可以自由控制仿真场景的尺寸大小了。
实际设计中,还包含相关的辅助设计。首先在PublicMember 中定义了两个静态窗口指针:
//场景窗口句柄
static HWND CTS_RunningWindow;
//程序主窗口句柄
static HWND CTS_MainWindow;
然后进行初始化:
HWND PublicMember::CTS_RunningWindow =NULL;
HWND PublicMember::CTS_MainWindow=NULL;
并在适当的地方获取真实的值,本节是在“运行”按钮下进行赋值:
PublicMember::CTS_MainWindow=theApp.GetMainWnd()->GetSafeHwnd();
CWnd *pWnd=GetDlgItem(IDC_grScene);
PublicMember::CTS_RunningWindow=pWnd->GetSafeHwnd();(www.daowen.com)
接着,在窗口函数PublicMember::CTS_Keyboard(vpWindow *window,vpWindow::Key key,int modifier,void *)中添加代码,按下M 键时,窗口全屏显示,按下N 键时,恢复到800×600的窗口:
其中的关键代码,首先是设置宽度和高度值,其次是设置主窗口的尺寸,接着是设置仿真窗口控件的尺寸,最后才是设置仿真窗口的尺寸。
最后,需要在VP 主线程中进行相关的配置:
//绘制场景
vpKernel::instance()->configure();
//设置观察者
PublicMember::CTS_pObject_observer=vpObject::find("Hummer");
PublicMember::CTS_pObject_observer->ref();
//设置窗体
vpWindow * vpWin= * vpWindow::begin();
vpWin->setParent(PublicMember::CTS_RunningWindow);
vpWin->setFullScreenEnable(false);
//设置键盘函数
vpWin->setInputEnable(true);
vpWin->setKeyboardFunc((vrWindow::KeyboardFunc)PublicMember::CTS_Keyboard,NULL);
vpWin->open();
::SetFocus(vpWin->getWindow());
在图6.27.1(a)中,按下M 键,仿真场景是单独全屏;在图6.26.1(b)中,按下M 键,仿真场景恢复原状。
图6.27.1 仿真场景全屏控制
当然,用户还可以根据需要做更多的控制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。