|
我改写了一下osg例子中的osgViewerFOX,想实现一些简单的功能,但读取文件的时候总是会发生应用程序错误,而wxwidget中的却不出错,请高手指教。
wxwidget中的读取文件代码:
void MainFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
{
wxFileDialog dialog(this, _T("lease choose a model"),
wxEmptyString, wxEmptyString, wxT("*.osg"), wxFD_OPEN);
if (dialog.ShowModal() == wxID_OK)
{
wxString filename(dialog.GetPath());
osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile(std::string(filename.mb_str()));
if (!loadedModel)
{
MessageBox(NULL,"load error","load",MB_OK);
}
else
_viewer->setSceneData(loadedModel.get());
}
SetStatusText(_T("Welcome to SevenCat's WxWidgets-Osg Viewer!"));
}
Fox中的文件读取代码:
long MainFrame:nCmdOpen(FXObject*, FXSelector, void*)
{
const FXchar patterns[]="All Files (*)\nOSG Files (*.osg)";
FXFileDialog open(this,"Open some file");
open.setPatternList(patterns);
if(open.execute()){
fxmessage("File=%s\n",open.getFilename().text());
osg::ref_ptr<osg::Node> LoadModel = osgDB::readNodeFile(std::string(open.getFilename().text()));
std::cout<<open.getFilename().text()<<std::endl;
if(LoadModel)
mdichild->SetScene(LoadModel);
}
return 1;
}
其中mdichild是FOX_OSG_MDIVIEW类的一个实例,SetScene方法是令它的成员变量m_osgViewer->setSceneData()
昨天我试了一下,读取文件并没有问题,今天不知道怎么的,open.getFilename().text()能得到文件路径,但是总是会出现应用程序错误。 |
|