面朝大海,春暖花开

作者:xiaokcehui2015-12-15 13:59分类: 点云和虚拟 标签: ogre MyGUI

 

因为Ogre使用MyGUI作为GUI,所以需要看懂MyGUI。

MyGUI实质是Win32的DLL。

MyGUI的Samples是引用MyGUI库的Win32  App。

以MyGUI3.2.0的实例Demo_ItemBox为例,

首先看其文件,找不到winmain在哪里。看了很多Samples后,它们都有1个

DemoKeeper的文件,怀疑跟这个文件有关。

在DemoKeeper。cpp的文件尾发现了一行:

 MYGUI_APP(demo::DemoKeeper)

在Base/Main.h文件里有一段代码:

#if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
# ifdef MYGUI_CHECK_MEMORY_LEAKS
#  define MYGUI_APP(cls) INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT argc) { _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); return startApp<cls>(); }
# else
#  define MYGUI_APP(cls) INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT argc) { return startApp<cls>(); }
# endif
#else
# define MYGUI_APP(cls) int main(int argc, char **argv) { return startApp<cls>(); }
#endif
//函数模板
template <class AppClass>
int startApp()
{
 try
 {
  AppClass* app = new AppClass();
  app->prepare();
  if (app->create())
  {
   app->run();
   app->destroy();
  }
  delete app;
  app = 0;
 }

 

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 0/1950 人参与

发表评论:

欢迎使用手机扫描访问本站,还可以关注微信哦~