理解MyGUI3.2.0及其Samples的运行实质

来源:互联网 发布:mac分区不动了 编辑:程序博客网 时间:2024/06/10 04:11


 更多资讯见xiaok海洋测绘网

因为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 0
原创粉丝点击