MyGUI 学习笔记(一)——MyGUI sample1——13.01.23

  • Code samples 中的各个网页内容学习并记录

     

    MyGUI入门编写结构,显示一个对话框

    1、声明主类class DemoKeeper :public base::BaseManager。其中base::BaseManager是MyGui的一个管理控制父类,里面包括OGRE的基本创建和渲染。

    2、添加对应的include文件夹,编译直到通过。

    3、编写一个简单的Layout文件。保存文件名为 helloword.layout 。也可以先用demo修改。

    <?xml version="1.0" encoding="UTF-8"?>
    <MyGUI type="Layout" version="3.2.0">
        <Widget type="Window" skin="WindowC" position="20 72 211 309" layer="Overlapped" name="_Main">
    	<Property key="Caption" value="HelloWord!!"/>
                <Widget type="Button" skin="Button" position="14 22 160 26" name="OK">
                        <Property key="Caption" value="OK"/>
                </Widget>
        </Widget>
    </MyGUI>
    

    4、创建类class HelloWord :public wraps::BaseLayout。其中wraps::BaseLayout为所有用Layout载入对话框的基类。

    5、将HelloWord类的父类初始化为

    	HelloWord::HelloWord() :
    		BaseLayout("HelloWord.layout")
    	{}
    
    其中HelloWord.layout为(3)中编写的Layout文件。

    6、添加代码如下

    	void DemoKeeper::createScene()
    	{
    		createDefaultScene();	//父类函数
    		
    		//浮动注解框
    		const MyGUI::VectorWidgetPtr& root = MyGUI::LayoutManager::getInstance()
                              .loadLayout("HelpPanel.layout");
    		root.at(0)->findWidget("Text")->castType<MyGUI::TextBox>()->setCaption(L"first window.HelloWord!中文测试");
    		mHelloWord = new HelloWord();//创建对话框
    	}

    7、编译运行,有错误。没有载入资源,添加代码如下

    	
    	void DemoKeeper::setupResources()
    	{
    		base::BaseManager::setupResources();
    		//BaseManager::addResourceLocation 
    		//调用Ogre::ResourceGroupManager::addResourceLocation 加载资源
    		addResourceLocation(getRootMedia() + "/Demo_jp/helloword");
    		addResourceLocation(getRootMedia() + "/Demos/Demo_Gui");
    		addResourceLocation(getRootMedia() + "/Common/Scene");
    		addResourceLocation(getRootMedia() + "/Common/Demos");
    	}
    

    8、编译运行。可以看到一个对话框。对话框的样式,是根据HelloWord.layout控制的。

    到这里我们就显示了一个基本的对话框,但是里面的按钮等的功能都没有响应。


    其它场景是

    	void DemoKeeper::createScene()
    	{
    		createDefaultScene();	//父类函数

    这个里面自带的。

    响应对话框的按钮点击

    1、添加代码

    	HelloWord::HelloWord() :
    		BaseLayout("helloword.layout")
    	{
    		//将 mButtonOk 和 对话框名字"OK" 相对应
    		assignWidget(mButtonOk, "OK");
    		//托管 按钮点击
    		mButtonOk->eventMouseButtonClick += MyGUI::newDelegate(this,
    			&HelloWord::notifyMouseButtonClick);
    	}
    

    2、添加响应函数

    	void HelloWord::notifyMouseButtonClick(MyGUI::Widget* _sender)
    	{
    		//处理按钮的响应
    	}
    可以处理按钮动作响应了。


    给这个对话框创建一个子对话框

    1、参照上面的布置写一个 ChildWin类和ChildWin.layout文件。

    2、将ChildWin类修改如下:

    	ChildWin::ChildWin(MyGUI::Widget* _parent) :
    		BaseLayout("ChildWin.layout", _parent)
    {
    //略……
    }
    3、添加代码如下:

    void DemoKeeper::createScene()
    	{		
    		//略……
    		mHelloWord = new HelloWord();//创建对话框
    		mChildWin = new ChildWin(mHelloWord->getView());//创建子对话框
    		mChildWin->getView()->setPosition(20,50);
    	}
    4、显示效果。

    5、修改helloword.layout  文件如下

    <Widget type="Window" skin="WindowC" position="20 72 711 709" layer="Overlapped" name="_Main">

    6、显示效果



    先到这里吧。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值