在CEGUI中使用layout文件(1)
CEGUI支持两种方式的资源使用,一种就是在前文可见的直接在c++文件当中创建窗体,使用窗体;另一种方式就是在layout文件当中定制窗体。从理论上讲,两种方式都能达到相同的目的。
在不使用layout文件时,CEGUI是不太方便的,因为要定位控件,常常得修改文件当中的参数,如果在c++文件当中修改,每次都编译,很恶心(尤其是在有编辑器的情况下,使用c++就不能使用了)。
所以如果你要使用CEGUI,对layout文件的使用和编辑都是必修课。
下面这个就是一个简单的使用layout文件的例子,作的仅仅是把文件读进来、显示在窗口里了。
#include
"
TDemo1.h
"
#include " CEGUI.h "
#include " CEGuiBaseApplication.h "
#include < cstdlib >
int main( int argc, char * argv[])
... {
TDemo1 app;
return app.run();
}
/**/ /*************************************************************************
*************************************************************************/
bool TDemo1::initialiseSample()
... {
using namespace CEGUI;
// 窗体管理器
WindowManager& winMgr = WindowManager::getSingleton();
// 载入资源
SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
FontManager::getSingleton().createFont("Commonwealth-10.font");
// 在此载入layout文件
// 这个就是要在实际当中经常使用的
Window* sheet = winMgr.loadWindowLayout("TDemo1.layout");
System::getSingleton().setGUISheet(sheet);
return true;
}
/**/ /*************************************************************************
*************************************************************************/
void TDemo1::cleanupSample()
... {
// 啥也不做
}
#include " CEGUI.h "
#include " CEGuiBaseApplication.h "
#include < cstdlib >
int main( int argc, char * argv[])
... {
TDemo1 app;
return app.run();
}
/**/ /*************************************************************************
*************************************************************************/
bool TDemo1::initialiseSample()
... {
using namespace CEGUI;
// 窗体管理器
WindowManager& winMgr = WindowManager::getSingleton();
// 载入资源
SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
FontManager::getSingleton().createFont("Commonwealth-10.font");
// 在此载入layout文件
// 这个就是要在实际当中经常使用的
Window* sheet = winMgr.loadWindowLayout("TDemo1.layout");
System::getSingleton().setGUISheet(sheet);
return true;
}
/**/ /*************************************************************************
*************************************************************************/
void TDemo1::cleanupSample()
... {
// 啥也不做
}
TDemo1.layout
<?
xml version="1.0" encoding="UTF-8"
?>
< GUILayout >
< Window Type ="DefaultWindow" Name ="root" >
< Property Name ="UnifiedMaxSize" Value ="{{1,0},{1,0}}" />
< Property Name ="UnifiedAreaRect" Value ="{{0,0},{0,0},{1,0},{1,0}}" />
< Window Type ="TaharezLook/FrameWindow" Name ="TDemo1/Window1" >
< Property Name ="Text" Value ="TDemo 1" />
< Property Name ="UnifiedMaxSize" Value ="{{0.8,0},{0.8,0}}" />
< Property Name ="UnifiedMinSize" Value ="{{0.2,0},{0.2,0}}" />
< Property Name ="UnifiedAreaRect" Value ="{{0.4,0},{0.1,0},{0.9,0},{0.7,0}}" />
< Property Name ="CloseButtonEnabled" Value ="False" />
</ Window >
</ Window >
</ GUILayout >
< GUILayout >
< Window Type ="DefaultWindow" Name ="root" >
< Property Name ="UnifiedMaxSize" Value ="{{1,0},{1,0}}" />
< Property Name ="UnifiedAreaRect" Value ="{{0,0},{0,0},{1,0},{1,0}}" />
< Window Type ="TaharezLook/FrameWindow" Name ="TDemo1/Window1" >
< Property Name ="Text" Value ="TDemo 1" />
< Property Name ="UnifiedMaxSize" Value ="{{0.8,0},{0.8,0}}" />
< Property Name ="UnifiedMinSize" Value ="{{0.2,0},{0.2,0}}" />
< Property Name ="UnifiedAreaRect" Value ="{{0.4,0},{0.1,0},{0.9,0},{0.7,0}}" />
< Property Name ="CloseButtonEnabled" Value ="False" />
</ Window >
</ Window >
</ GUILayout >