<?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet type="text/xsl" title="XSL Formatting" href="/static_files/markdown/rss.xsl" media="all" ?>
<rss version="2.0">
    <channel>
        <title>Heath's Blog</title>
        <image>
            <link>https://blog.csdn.net/</link>
            <url>https://static-blog.csdn.net/images/logo.gif</url>
        </image>
        <description>+Focus on Game Development+</description>
        <link>https://blog.csdn.net/Lodger007</link>
        <language>zh-cn</language>
        <generator>https://blog.csdn.net/</generator>
        <ttl>5</ttl>
        <copyright><![CDATA[Copyright &copy; Lodger007]]></copyright>
        <pubDate>2018/03/26 05:49:40</pubDate>
                    <item>
                                <title><![CDATA[[原]新博客地址，欢迎光临！]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2770041</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2770041</guid>
                <author>Lodger007</author>
                <pubDate>2008/08/05 12:06:00</pubDate>
                <description>
                    <![CDATA[
                    <p>由于工作的原因，很久没有写博客了。目前闲暇时间比较多，在<a href="http://www.cppblog.com/heath/">http://www.cppblog.com/heath/</a>上新开了博客，欢迎光临！</p>                    <div>
                        作者：Lodger007 发表于 2008/08/05 12:06:00 <a href="https://blog.csdn.net/Lodger007/article/details/2770041">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2770041                    </div>
                    <div>
                        阅读：1533 评论：2 <a href="https://blog.csdn.net/Lodger007/article/details/2770041#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]终于决定放弃CSDN BLOG]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2423503</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2423503</guid>
                <author>Lodger007</author>
                <pubDate>2008/05/09 16:15:00</pubDate>
                <description>
                    <![CDATA[
                    不知从什么时候起，我的 Introduction to MaNGOS一文的内容变成了“PHP4和PHP5性能测试和对比”，在开发团队的blog留言留了N久也不回复。以前出现这样那样的问题就忍了，想不到我辛苦写的文章被这样糟蹋，我只有选择离开～                    <div>
                        作者：Lodger007 发表于 2008/05/09 16:15:00 <a href="https://blog.csdn.net/Lodger007/article/details/2423503">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2423503                    </div>
                    <div>
                        阅读：1467 评论：1 <a href="https://blog.csdn.net/Lodger007/article/details/2423503#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]AddOns for World of Warcraft 之 “Hello, WoW!”]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2280109</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2280109</guid>
                <author>Lodger007</author>
                <pubDate>2008/04/10 22:52:00</pubDate>
                <description>
                    <![CDATA[
                    暴雪用5年的世界打造了世界顶级的网游World of Warcraft，复杂多变的操作方法为游戏增添了无穷乐趣，而游戏的可玩性不仅仅体现在游戏世界本身，其XML+Lua的扩展机制也成为该款游戏的一大玩点。就像大家熟知的firefox一样，WoW提供了丰富的接口，允许玩家实现一些有额外功能（如：物件ID查询），这些额外功能被称为Addon。客户端安装目录下/Interface/AddOns就是用于放置各种Addon的地方。<br />在开发Addon之前，必须了解其构成。在WoW中，规定Addon由至少三中文件构成：<br /><ul><li>toc：指明该Addon适用的客户端API版本，以及Addon包含（和依赖）的文件。</li>
    <li>xml：用于创建UI，指明事件处理脚本（Lua）。在某些情况下，可以不需要Lua文件，而直接将脚本嵌入到&lt;scripts&gt;&lt;/scripts&gt;标签中。</li>
    <li>lua：实现Addon功能的脚本。</li>
</ul>
下面我将实现一个在聊天框中输入命令来执行两个整数相加的Lua脚本，我将该插件命名为Test: <br /> Test.toc文件内容： <br /><div class="code">  ## Interface: 20300 <br /> ## Title: Test Addon <br /> test.lua <br /> test.xml <br /></div>
Test.xml文件内容：<br /><div class="code">&lt;Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/../FrameXML/UI.xsd"&gt;<br />    &lt;Frame name = "Test_Frame" hidden="true"&gt;<br />        &lt;Scripts&gt;<br />            &lt;OnLoad&gt;Test_load();&lt;/OnLoad&gt;<br />        &lt;/Scripts&gt;<br />    &lt;/Frame&gt;<br />&lt;/Ui&gt;<br /></div>
Test.lua文件内容：<br /><div class="code">function Test_load()<br />    -- Slash Commands<br />    SLASH_Test1 = "/test";<br />    SlashCmdList["Test"] = Test_commandline;<br />    DEFAULT_CHAT_FRAME:AddMessage("Test AddOn is now loaded!");<br />end<br /><br />function Test_commandline(cmd)<br />    local a = gsub(cmd , "(%d+)(%s)(%d+)", "%1");<br />    local b = gsub(cmd , "(%d+)(%s)(%d+)", "%3");<br />    DEFAULT_CHAT_FRAME:AddMessage("a + b ="..a+b);<br />end<br /> 为了运行Addon，需要将上述三个文件放在</div>
客户端安装目录下/Interface/AddOns/Test目录下，然后启动客户端，在聊天框中输入：/test &lt;arg1&gt; &lt;arg2&gt;就可以运行脚本了。截图如下：<br /><div style="text-align:center;"><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/script.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/result.png" alt="" /><br /></div>                    <div>
                        作者：Lodger007 发表于 2008/04/10 22:52:00 <a href="https://blog.csdn.net/Lodger007/article/details/2280109">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2280109                    </div>
                    <div>
                        阅读：2199                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]MaNGOS Windows Setup for WoW 2.3.3 (Chinese Edition)]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2279422</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2279422</guid>
                <author>Lodger007</author>
                <pubDate>2008/04/10 19:53:00</pubDate>
                <description>
                    <![CDATA[
                    对于不同语言版本的客户端，MaNGOS的安装上略有区别，本文将针对魔兽世界2.3.3简体中文版，详细讲述安装步骤。<br /> 一、必备工具<br /><ul><li>WoW客户端。可从官网下载，也可购买DVD安装盘（如果版本低于2.3.3，需下载补丁升级）。</li>
    <li>编译好的MaNGOS。使用Subversion从<a href="https://mangos.svn.sourceforge.net/svnroot/mangos/trunk">https://mangos.svn.sourceforge.net/svnroot/mangos/trunk</a>checkout源代码，在win子目录下选择相应的vs解决方案版本打开项目，编译后bin中就是MaNGOS的运行文件。也可以直接从<a href="http://www.mangosproject.org/forum/index.php?showtopic=4088">http://www.mangosproject.org/forum/index.php?showtopic=4088</a>下载编译好的版本。</li>
    <li>地图提取工具“ad.exe”。为了支持中文版，必须从<a href="https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/map_extractor">https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/map_extractor</a>checkout源代码，修改system.cpp中的语言代码为：char* langs[]={"zhCN", "enCN", "enUS", "frFR", "esES"}，然后重新编译得到ad.exe。</li>
    <li>dbc提取工具mpqe.exe。该工具由C#编写，运行需要.Net Framework。可从<a href="http://www.mangosproject.org/forum/index.php?showtopic=7456">http://www.mangosproject.org/forum/index.php?showtopic=7456</a>下载可执行文件，也可从<a href="https://mangoscms.svn.sourceforge.net/svnroot/mangoscms/trunk/tools/MPQE">https://mangoscms.svn.sourceforge.net/svnroot/mangoscms/trunk/tools/MPQE</a>checkout源代码，自行编译。</li>
    <li><a href="http://dev.mysql.com/downloads/mysql/">MySQL社区版</a></li>
    <li>MySQL GUI客户端工具，如免费且好用的SQLyog。<br /></li>
</ul>
二、安装MySQL并创建数据库<br /><ul><li>安装MySQL社区版，并配置SQL服务器。</li>
    <li>安装SQLyog。利用其登录，创建realmd、characters、mangos、scriptdev2数据库。</li>
</ul>
三、建立MaNGOS目录<br /><ul><li>创建MaNGOS目录，如:"D:/MaNGOS"。（如果直接下载编译文件，可省略以下步骤）</li>
    <li>拷贝源代码目录下/bin/release中的所有exe和dll文件到MaNGOS目录。</li>
    <li>拷贝/src/mangosd和/src/realmd中的mangosd.conf.in和realmd.conf.in，去掉“.in”后缀。</li>
    <li>确保“libeay32.dll”和"libmySQL.dll"在MaNGOS目录下。<br /></li>
</ul>
四、提取客户端map文件<br /><ul><li>将ad.exe放在客户端安装目录下，如:"D:/Word of Warcraft"。</li>
    <li>创建"maps"子目录，如:"D:/World of Warcraft/maps"。</li>
    <li>运行ad.exe（大概会提取至少3400个map文件）。</li>
    <li>当ad.exe运行完成后，拷贝maps子目录到MaNGOS目录下。<br /></li>
</ul>
五、提取客户端dbc文件<br /><ul><li>在MaNGOS下创建dbc子目录。</li>
    <li>将mpqe（包括：mpqe.exe和sfmpq.dll）拷贝到客户端安装目录/data/zhCN下。</li>
    <li>在命令行界面中运行： mpqe /p local-zhCN.mpq DBFilesClient/*.dbc。</li>
    <li>当mpqe运行完成后，拷贝../zhCN/MPQOUT|DBFilesClient下的所有dbc文件到MaNGOS的dbc子目录下，应该有176个文件。</li>
</ul>
六、构建Vmap文件<br /><ul><li>vmap用于处理“视线”问题。</li>
    <li>找到MaNGOS源代码或者编译版本中的makevmaps_SIMPLE.bat，运行之。</li>
    <li>将生成目录vmaps/下的所有vmap文件拷贝到MaNGOS目录下的vmaps子目录中。</li>
</ul>
七、安装及更新数据库<br /><ul><li>用SQLyog连接MySQL数据库。</li>
    <li>右键点击realmd数据库，选择“Restore from SQL Dump”。</li>
    <li>找到MaNGOS的sql目录中的realmd.sql，执行。</li>
    <li>使用相同方法导入characters、mangos、scriptdev2数据。</li>
    <li>需要说明的是，scriptdev2是针对WoW的游戏脚本，增加了额外的怪物及BOSS的AI，如果没有该脚本，你就只能进入一个索然无味的WoW世界。MaNGOS的编译版本中一般会提供scriptdev2的dll和sql脚本，如果你没有它们，可以从<a href="https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/">https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/</a>checkout来编译，并将scriptdev2.dll拷入MaNGOS目录。</li>
    <li>在sql目录下提供了各个数据表的更新脚本，如果你在运行mangosd.exe时失败，请查考日志文件，为对应的数据表进行更新。</li>
</ul>
八、使用UDB数据丰富游戏世界<br />         如果使用MaNGOS自带的mangos.sql，你将只能得到一个相当简单的游戏世界。为了丰富游戏世界，有另外一个小组着力于开发mangos数据脚本，你可以从<a href="http://www.udbforums.org/">http://www.udbforums.org/</a>得到更多关于udb的介绍。<a href="http://www.udbforums.org/index.php?showtopic=6629">http://www.udbforums.org/index.php?showtopic=6629</a>提供了目前最新的mangos数据脚本下载，通过使用第七步所讲述的方法，将sql脚本导入mangos数据库。<br /> 九、配置MaNGOS和客户端<br /><ul><li>在客户端的wtf子目录下创建realmlist.wtf文件（如果没有的话），并写入“set realmlist 127.0.0.1”。</li>
    <li>打开MaNGOS的realmd.conf文件，找到“LoginDatabaseInfo =" 将其修改为 "LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"。</li>
    <li>打开mangosd.conf文件，找到"[list]"项，修改：<ul><li>DataDir = "."</li>
        <li>WorldDatabaseInfo = "127.0.0.1;3306;root;[password];mangos"</li>
        <li>LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"</li>
        <li>CharacterDatabaseInfo = "127.0.0.1;3306;root;[password];characters"</li>
    </ul></li>
    </ul>
十、运行服务器端和客户端<br /><ul><li>先后启动realmd.exe和mangosd.exe，也可以写个批处理来运行，内容如下：</li>
</ul><div style="margin-left:40px;">@echo off<br /> start realmd.exe<br /> start mangosd.exe<br /> @echo on<br /></div>
<ul><li>对于客户端，不要直接点击快捷方式，因为其指向Launcher.exe。应该运行Wow.exe。</li>
    <li>如果客户端启动有问题（多数问题集中在mangosd.exe），请查看log文件，用sql/update中的数据脚本更新出现问题的数据表。</li>
</ul>
下面贴几张截图：<br /><div style="text-align:center;"><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/realmd.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/mangosd.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Login.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/ServeSelect.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Role.png" alt="" /><br /><br /><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Scene.png" alt="" /><br /></div>
<br />P.S. 由于UDB没有汉化，所以在游戏中某些地方会出现英文。                    <div>
                        作者：Lodger007 发表于 2008/04/10 19:53:00 <a href="https://blog.csdn.net/Lodger007/article/details/2279422">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2279422                    </div>
                    <div>
                        阅读：6160 评论：1 <a href="https://blog.csdn.net/Lodger007/article/details/2279422#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]Introduction to MaNGOS]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2276518</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2276518</guid>
                <author>Lodger007</author>
                <pubDate>2008/04/10 11:29:00</pubDate>
                <description>
                    <![CDATA[
                    <p><br style="color:rgb(255,0,0);" /></p>
<h1><span style="color:rgb(255,0,0);">csdn博客相当垃圾，居然把别人的文章链接到我的博客上了，这是什么行为！！！！</span></h1>
<p><font size="5" color="#993300"><strong>PHP4和PHP5性能测试和对比</strong></font></p>
<p><em>作者：heiyeluren<br />博客：</em><a href="http://blog.csdn.net/heiyeshuwu"><em>http://blog.csdn.net/heiyeshuwu</em></a><br /><em>时间：2007年8月6日</em></p>
<p><br />PHP 4到今年年底PHP Group将不再对其进行支持了，所以为了让大家更有信心的转移到PHP 5平台上，我特别做了这个测试，看看我们PHP 4.x 是否真的性能比我们的PHP 5.x要好捏，测试结果很明显，那就是PHP 5.x 比php 4.x不论是面向对象还是面向过程，都要比PHP 4.x 要快，所以大家完全有必要转移到PHP 5.x 平台上，去体验PHP 5.x 平台的各种功能和性能。</p>
<p>因为PHP 5 包括新的对象模型，更多新特点，更快的处理速度，特别是处理面向对象代码的速度，虽然在php 4中面向对象代码的速度比较一般，但是在PHP5.x中面向对象代码的速度都超过了面向过程的速度，所以不要对面向对象的性能持有怀疑，下面的测试结果将说明这一切。</p>
<p> </p>
<p><strong><font size="3">【测试环境】</font></strong></p>
<ul><li>CPU:       Intel Pentium4 2.66GHz </li>
    <li>Memory: 1GB </li>
    <li>Disk:       73GB/SCSI </li>
    <li>OS:          FreeBSD 4.11 </li>
    <li>Web:       Apache 1.3.37 <strong></strong><br />测试工具：<strong>ab</strong> （也可以选用http_load）<br />名词RPS:  <strong>Requests per second</strong> (每秒的请求数量)</li>
</ul><p><strong>相关<br /></strong>测试工具：<strong>ab</strong> （也可以选用http_load）<br />名词RPS:  <strong>Requests per second</strong> (每秒的请求数量)</p>
<p><br /><br /><font size="3"><strong>【PHP 4.4.2 测试结果】</strong></font></p>
<p><strong>[ 函数 Function ]</strong></p>
<p><font color="#993300">function signin(){<br />  echo "test";<br />}<br />signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是<strong>1047.23/rps</strong></p>
<p><br /><strong>[ 类 Class ]</strong></p>
<p>不实例化类<br /><font color="#993300">class User{<br />    function signin(){<br />        echo "test";<br />    }<br />} <br />User::signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1034.98/rps</strong></p>
<p><br /><strong>实例化类<br /></strong><font color="#993300">class User{<br />    function signin(){<br />        echo "test";<br />    }<br />}<br />$user=new User();<br />$user-&gt;signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1006.14/rps</strong></p>
<p><br /><strong>类的继承</strong><br /><font color="#993300">class AUser{<br />     function signin(){}<br />}<br />class User extends Auser{<br />    function signin(){<br />        echo "test";<br />    }<br />}<br />$user=new User();<br />$user-&gt;signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>992.95/rps</strong></p>
<p> </p>
<p> </p>
<p><font size="3"><strong>【PHP 5.2.1测试结果】</strong></font></p>
<p><strong><font size="2">[ 函数 Function ]</font></strong></p>
<p><font color="#993300">function signin(){<br />  echo "test";<br />}<br />signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1176.06/rps</strong></p>
<p><br /><strong><font size="2">[ 类 Class ]</font></strong></p>
<p><strong>不实例化类</strong><br /><font color="#993300">class User{<br />    public function signin(){<br />        echo "test";<br />    }<br />} <br />User::signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1197.17/rps</strong></p>
<p><strong>实例化类</strong><br /><font color="#993300">class User{<br />    public function signin(){<br />        echo "test";<br />    }<br />}<br />$user=new User();<br />$user-&gt;signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1187.93/rps</strong></p>
<p><br /><strong>类的继承和抽象</strong><br /><font color="#993300">abstract class AUser{<br />    abstract function signin();<br />}<br />class User extends Auser{<br />    public function signin(){<br />        echo "test";<br />    }<br />}<br />$user=new User();<br />$user-&gt;signin();<br />?&gt;</font><br />测试结果：ab -n 10000 -c 50 的结果是 <strong>1128.54/rps</strong></p>
<p> </p>
<p><font size="3"><strong>【测试结果和分析】</strong></font></p>
<p><strong>[ 测试结果数据 ]</strong></p>
<p>
</p><table width="568" cellspacing="1" cellpadding="1" border="1" align="left" summary=""><tbody><tr><td>版本</td>
            <td>函数测试</td>
            <td>不实例化类</td>
            <td>实例化类</td>
            <td>类的继承</td>
        </tr><tr><td>PHP 4.4.2</td>
            <td>1047.23/rps </td>
            <td>1034.98/rps </td>
            <td>1006.14/rps </td>
            <td>992.95/rps</td>
        </tr><tr><td>PHP 5.2.1</td>
            <td>1176.06/rps </td>
            <td>1197.17/rps </td>
            <td> 1187.93/rps </td>
            <td>1128.54/rps<br /></td>
        </tr></tbody></table><p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><br /><strong>[ 结果分析 ]</strong></p>
<p><strong>1.</strong> 总体来说，可以明显刚看到PHP5.2 的性能要比 PHP4.4略高一点，所以不要怀疑PHP5.2的性能会差，明显比 PHP4要快<br /><strong>2.</strong> PHP4.4中的类的解析性能明显要比函数的要慢，特别是当使用了继承以后，更是下降的厉害，所以在PHP4.4中更适宜使用面向过程和没有继承的类操作<br /><strong>3.</strong> PHP5.2中结果是类的执行速度比函数还要快，可以看出PHP5.2的引擎对面向对象处理花费了很大的功夫，同时他们不论是函数还是类，性能都不错<br /><strong>4.</strong> 通过这个测试，我们完全有理由在代码变更不大的情况下，把PHP4升级到PHP5，而且PHP5基本向下兼容PHP4的代码，除了一些特殊的代码。另外上面提到今年年底之后PHP Group将不再继续对PHP4进行维护了，所以早升级，早安心。</p>
<p><em>PS: 感谢同事健祥同学提供部分测试代码</em></p>
<p> </p>
<br /><br />                    <div>
                        作者：Lodger007 发表于 2008/04/10 11:29:00 <a href="https://blog.csdn.net/Lodger007/article/details/2276518">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2276518                    </div>
                    <div>
                        阅读：1283 评论：1 <a href="https://blog.csdn.net/Lodger007/article/details/2276518#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]游戏创造一种电影体验，很难吗？]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/2256428</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/2256428</guid>
                <author>Lodger007</author>
                <pubDate>2008/04/07 11:14:00</pubDate>
                <description>
                    <![CDATA[
                    说实话，在游戏开发技术方面，中国确实比较落后，但这不等于说中国就不能产出好的游戏。中华五千年的历史积淀，给了创造顶级游戏的文化基础，更何况技术并不是决定游戏好坏的唯一指标。曾经看到过国外某娱乐公司的老总发表的言论：“我还从未在游戏故事中得到过像一部好电影那样感动我的体验。我从未因为游戏而流泪，我甚至从未有过落泪的想法...”。当看完这段话时，我头脑中却早已浮现出游戏中一幕幕让我难忘的场景，它们是那么美好，那么浪漫。他说的可能是事实，但那是在国外。《波斯王子》系列应该算是具有完整故事情节的那类游戏了吧，但在游戏结束那一刻，我仍旧不能体会到些许什么，只是依稀觉得又是一个英雄救美，或者杀死大Boss完事的情节。我不能说这些游戏不是好游戏，因为中国人与西方人有着不同的认知和表达方式。但以电影体验来说，这些游戏确实不能给玩家带来什么。而在中国却不乏以电影体验吸引众多玩家的游戏，《仙剑奇侠传》系列应该是这些作品中的佼佼者。《仙剑4》将这种电影体验发挥到了极致，毫不夸张地说，它让我看了一部浪漫却略带破缺的古装武侠片。利用宏大的场景和紧凑的剧情，将玩家带入到一个玄妙世界中，让其亲身体会到了一段奇幻而凄美的爱情故事。此外，游戏中的音乐和对白成为表达故事情节的另外一种形式。这样，游戏制作者以立体全方位的手段增强了游戏的沉浸感。<br />游戏要创造一种电影体验，很难吗？其实不难，关键是游戏创作者怎样看待自己，将自己作为导演，还是演员。                    <div>
                        作者：Lodger007 发表于 2008/04/07 11:14:00 <a href="https://blog.csdn.net/Lodger007/article/details/2256428">原文链接</a> https://blog.csdn.net/Lodger007/article/details/2256428                    </div>
                    <div>
                        阅读：1595                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]利用CEGUI+Lua实现灵活的游戏UI框架]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1926057</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1926057</guid>
                <author>Lodger007</author>
                <pubDate>2007/12/09 22:47:00</pubDate>
                <description>
                    <![CDATA[
                    &nbsp;&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>在上一篇文章中，介绍了一种基于组件方式的游戏UI架构设计方案，在这里，笔者将介绍如何利用CEGUI和Lua来实现这种灵活的框架。
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CEGUI</span>是一个兼容OpenGL、DirectX的优秀开源GUI库，关于她的介绍以及如何在Direct3D中使用她，可以参考<a href="http://blog.csdn.net/Lodger007/archive/2007/07/02/1675141.aspx">http://blog.csdn.net/Lodger007/archive/2007/07/02/1675141.aspx</a>一文。Lua是一种强大的脚本语言，她使用栈作为数据接口，能够很容易地与其它语言交互，关于她的介绍可以参考<a href="http://www.lua.org/">http://www.lua.org/</a>，以及笔者以前翻译的三篇系列文章：Lua入门（<a href="http://blog.csdn.net/Lodger007/archive/2006/06/26/836466.aspx">http://blog.csdn.net/Lodger007/archive/2006/06/26/836466.aspx</a>）、调用Lua函数（<a href="http://blog.csdn.net/Lodger007/archive/2006/06/26/836897.aspx">http://blog.csdn.net/Lodger007/archive/2006/06/26/836897.aspx</a>）、在Lua中调用C++函数（<a href="http://blog.csdn.net/Lodger007/archive/2006/06/26/837349.aspx">http://blog.csdn.net/Lodger007/archive/2006/06/26/837349.aspx</a>）。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>在实现中，作为UI组件管理器的GUISystem是一个单件，这样，你能够很方便地在任何地方使用其全局唯一的对象。下面是Singleton和GUISystem的实现代码：</div>
<div>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img id="_0_15_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_15_Open_Text').style.display='none'; document.getElementById('_0_15_Closed_Image').style.display='inline'; document.getElementById('_0_15_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_0_15_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_0_15_Closed_Text').style.display='none'; document.getElementById('_0_15_Open_Image').style.display='inline'; document.getElementById('_0_15_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /><span id="_0_15_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_0_15_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;Singleton.h</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;SINGLETON(class_name)&nbsp;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;class_name&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">;&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="_133_134_Open_Image" onclick="this.style.display='none'; document.getElementById('_133_134_Open_Text').style.display='none'; document.getElementById('_133_134_Closed_Image').style.display='inline'; document.getElementById('_133_134_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_133_134_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_133_134_Closed_Text').style.display='none'; document.getElementById('_133_134_Open_Image').style.display='inline'; document.getElementById('_133_134_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;class_name()&nbsp;</span><span id="_133_134_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_133_134_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="_153_154_Open_Image" onclick="this.style.display='none'; document.getElementById('_153_154_Open_Text').style.display='none'; document.getElementById('_153_154_Closed_Image').style.display='inline'; document.getElementById('_153_154_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_153_154_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_153_154_Closed_Text').style.display='none'; document.getElementById('_153_154_Open_Image').style.display='inline'; document.getElementById('_153_154_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">class_name()&nbsp;</span><span id="_153_154_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_153_154_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;class_name(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">);&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;SINGLETON2(class_name)&nbsp;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;class_name&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">;&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;class_name(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">);&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;class_name</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;typename&nbsp;T&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Singleton<br /><img id="_446_676_Open_Image" onclick="this.style.display='none'; document.getElementById('_446_676_Open_Text').style.display='none'; document.getElementById('_446_676_Closed_Image').style.display='inline'; document.getElementById('_446_676_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_446_676_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_446_676_Closed_Text').style.display='none'; document.getElementById('_446_676_Open_Image').style.display='inline'; document.getElementById('_446_676_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_446_676_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_446_676_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br /><img id="_472_473_Open_Image" onclick="this.style.display='none'; document.getElementById('_472_473_Open_Text').style.display='none'; document.getElementById('_472_473_Closed_Image').style.display='inline'; document.getElementById('_472_473_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_472_473_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_472_473_Closed_Text').style.display='none'; document.getElementById('_472_473_Open_Image').style.display='inline'; document.getElementById('_472_473_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;Singleton()&nbsp;</span><span id="_472_473_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_472_473_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="_497_498_Open_Image" onclick="this.style.display='none'; document.getElementById('_497_498_Open_Text').style.display='none'; document.getElementById('_497_498_Closed_Image').style.display='inline'; document.getElementById('_497_498_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_497_498_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_497_498_Closed_Text').style.display='none'; document.getElementById('_497_498_Open_Image').style.display='inline'; document.getElementById('_497_498_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Singleton()&nbsp;</span><span id="_497_498_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_497_498_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="_534_535_Open_Image" onclick="this.style.display='none'; document.getElementById('_534_535_Open_Text').style.display='none'; document.getElementById('_534_535_Closed_Image').style.display='inline'; document.getElementById('_534_535_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_534_535_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_534_535_Closed_Text').style.display='none'; document.getElementById('_534_535_Open_Image').style.display='inline'; document.getElementById('_534_535_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;Singleton(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;T&nbsp;</span><span style="COLOR: #000000">&gt;&amp;</span><span style="COLOR: #000000">)&nbsp;</span><span id="_534_535_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_534_535_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="_589_590_Open_Image" onclick="this.style.display='none'; document.getElementById('_589_590_Open_Text').style.display='none'; document.getElementById('_589_590_Closed_Image').style.display='inline'; document.getElementById('_589_590_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_589_590_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_589_590_Closed_Text').style.display='none'; document.getElementById('_589_590_Open_Image').style.display='inline'; document.getElementById('_589_590_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;T&nbsp;</span><span style="COLOR: #000000">&gt;&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;T&nbsp;</span><span style="COLOR: #000000">&gt;&amp;</span><span style="COLOR: #000000">)&nbsp;</span><span id="_589_590_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_589_590_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;T</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;GetSingleton()<br /><img id="_627_674_Open_Image" onclick="this.style.display='none'; document.getElementById('_627_674_Open_Text').style.display='none'; document.getElementById('_627_674_Closed_Image').style.display='inline'; document.getElementById('_627_674_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_627_674_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_627_674_Closed_Text').style.display='none'; document.getElementById('_627_674_Open_Image').style.display='inline'; document.getElementById('_627_674_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_627_674_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_627_674_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;T&nbsp;_singleton;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_singleton;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;</span></div>
</div>
</div>
<div></div>
<div>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img id="_0_13_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_13_Open_Text').style.display='none'; document.getElementById('_0_13_Closed_Image').style.display='inline'; document.getElementById('_0_13_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_0_13_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_0_13_Closed_Text').style.display='none'; document.getElementById('_0_13_Open_Image').style.display='inline'; document.getElementById('_0_13_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /><span id="_0_13_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_0_13_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;GUISystem</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Singleton.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">UIObject.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">CEGUI.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">RendererModules</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">directx9GUIRenderer</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">d3d9renderer.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;GUISystem&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;GUISystem&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="_233_898_Open_Image" onclick="this.style.display='none'; document.getElementById('_233_898_Open_Text').style.display='none'; document.getElementById('_233_898_Closed_Image').style.display='inline'; document.getElementById('_233_898_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_233_898_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_233_898_Closed_Text').style.display='none'; document.getElementById('_233_898_Open_Image').style.display='inline'; document.getElementById('_233_898_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_233_898_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_233_898_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />SINGLETON(&nbsp;GUISystem&nbsp;)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br /><img id="_311_329_Open_Image" onclick="this.style.display='none'; document.getElementById('_311_329_Open_Text').style.display='none'; document.getElementById('_311_329_Closed_Image').style.display='inline'; document.getElementById('_311_329_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_311_329_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_311_329_Closed_Text').style.display='none'; document.getElementById('_311_329_Open_Image').style.display='inline'; document.getElementById('_311_329_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;,&nbsp;UIObject</span><span style="COLOR: #000000">*&gt;</span><span style="COLOR: #000000">&nbsp;_UIMap;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_311_329_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_311_329_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;游戏中需要用到的所有UI对象</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;,&nbsp;UIObject</span><span style="COLOR: #000000">*&gt;</span><span style="COLOR: #000000">::iterator&nbsp;MapIter;<br /><img id="_427_445_Open_Image" onclick="this.style.display='none'; document.getElementById('_427_445_Open_Text').style.display='none'; document.getElementById('_427_445_Closed_Image').style.display='inline'; document.getElementById('_427_445_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_427_445_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_427_445_Closed_Text').style.display='none'; document.getElementById('_427_445_Open_Image').style.display='inline'; document.getElementById('_427_445_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">UIObject</span><span style="COLOR: #000000">*&gt;</span><span style="COLOR: #000000">&nbsp;_curUIList;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_427_445_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_427_445_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;当前场景中使用的UI对象列表</span><span style="COLOR: #808080"></span></span><br /><img id="_488_504_Open_Image" onclick="this.style.display='none'; document.getElementById('_488_504_Open_Text').style.display='none'; document.getElementById('_488_504_Closed_Image').style.display='inline'; document.getElementById('_488_504_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_488_504_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_488_504_Closed_Text').style.display='none'; document.getElementById('_488_504_Open_Image').style.display='inline'; document.getElementById('_488_504_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::DirectX9Renderer</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;_pCEGUIRender;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_488_504_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_488_504_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;CEGUI&nbsp;Render</span><span style="COLOR: #808080"></span></span><br /><img id="_534_542_Open_Image" onclick="this.style.display='none'; document.getElementById('_534_542_Open_Text').style.display='none'; document.getElementById('_534_542_Closed_Image').style.display='inline'; document.getElementById('_534_542_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_534_542_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_534_542_Closed_Text').style.display='none'; document.getElementById('_534_542_Open_Image').style.display='inline'; document.getElementById('_534_542_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;_pGameGUI;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_534_542_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_534_542_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;顶层UI</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br /><img id="_553_567_Open_Image" onclick="this.style.display='none'; document.getElementById('_553_567_Open_Text').style.display='none'; document.getElementById('_553_567_Closed_Image').style.display='inline'; document.getElementById('_553_567_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_553_567_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_553_567_Closed_Text').style.display='none'; document.getElementById('_553_567_Open_Image').style.display='inline'; document.getElementById('_553_567_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_553_567_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_553_567_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;载入所有UI对象&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;LoadAllUI();<br /><img id="_589_605_Open_Image" onclick="this.style.display='none'; document.getElementById('_589_605_Open_Text').style.display='none'; document.getElementById('_589_605_Closed_Image').style.display='inline'; document.getElementById('_589_605_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_589_605_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_589_605_Closed_Text').style.display='none'; document.getElementById('_589_605_Open_Image').style.display='inline'; document.getElementById('_589_605_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_589_605_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_589_605_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;从脚本中读入场景UI&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ReadFromScript(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;id);&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img id="_662_677_Open_Image" onclick="this.style.display='none'; document.getElementById('_662_677_Open_Text').style.display='none'; document.getElementById('_662_677_Closed_Image').style.display='inline'; document.getElementById('_662_677_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_662_677_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_662_677_Closed_Text').style.display='none'; document.getElementById('_662_677_Open_Image').style.display='inline'; document.getElementById('_662_677_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_662_677_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_662_677_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;初始化GUI系统&nbsp;*</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;Initialize(LPDIRECT3DDEVICE9&nbsp;pD3DDevice);<br /><img id="_728_745_Open_Image" onclick="this.style.display='none'; document.getElementById('_728_745_Open_Text').style.display='none'; document.getElementById('_728_745_Closed_Image').style.display='inline'; document.getElementById('_728_745_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_728_745_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_728_745_Closed_Text').style.display='none'; document.getElementById('_728_745_Open_Image').style.display='inline'; document.getElementById('_728_745_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_728_745_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_728_745_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;得到当前需要的UI对象&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;LoadCurUI(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sceneId);<br /><img id="_778_797_Open_Image" onclick="this.style.display='none'; document.getElementById('_778_797_Open_Text').style.display='none'; document.getElementById('_778_797_Closed_Image').style.display='inline'; document.getElementById('_778_797_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_778_797_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_778_797_Closed_Text').style.display='none'; document.getElementById('_778_797_Open_Image').style.display='inline'; document.getElementById('_778_797_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_778_797_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_778_797_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;得到当前场景所需的UI对象&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">UIObject</span><span style="COLOR: #000000">*&gt;&amp;</span><span style="COLOR: #000000">&nbsp;GetCurUIList();<br /><img id="_838_850_Open_Image" onclick="this.style.display='none'; document.getElementById('_838_850_Open_Text').style.display='none'; document.getElementById('_838_850_Closed_Image').style.display='inline'; document.getElementById('_838_850_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_838_850_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_838_850_Closed_Text').style.display='none'; document.getElementById('_838_850_Open_Image').style.display='inline'; document.getElementById('_838_850_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_838_850_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_838_850_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;得到UI对象&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;UIObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetUIObject(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;id);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span></div>
</div>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里需要说明一下，_pGameGUI的作用。CEGUI是以树形结构来管理每个UI部件的，所以在游戏场景中，我们需要这么一个根节点，_pGameGUI就是这个根的指针，也可以理解为顶层容器。如果你对CEGUI::DirectX9Render的使用有疑问，请参考<a href="http://blog.csdn.net/Lodger007/archive/2007/07/02/1675141.aspx">在DirectX 3D中使用CEGUI</a>一文，在此就不再迭述。下面是GUISystem.cpp代码：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">GUISystem.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">CEGUIDefaultResourceProvider.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">LuaScriptSystem.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;GUISystem::Initialize(LPDIRECT3DDEVICE9&nbsp;pD3DDevice)<br /><img id="_218_2049_Open_Image" onclick="this.style.display='none'; document.getElementById('_218_2049_Open_Text').style.display='none'; document.getElementById('_218_2049_Closed_Image').style.display='inline'; document.getElementById('_218_2049_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_218_2049_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_218_2049_Closed_Text').style.display='none'; document.getElementById('_218_2049_Open_Image').style.display='inline'; document.getElementById('_218_2049_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_218_2049_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_218_2049_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_pCEGUIRender&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CEGUI::DirectX9Renderer(pD3DDevice&nbsp;,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CEGUI::System(_pCEGUIRender);<br /><img id="_319_336_Open_Image" onclick="this.style.display='none'; document.getElementById('_319_336_Open_Text').style.display='none'; document.getElementById('_319_336_Closed_Image').style.display='inline'; document.getElementById('_319_336_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_319_336_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_319_336_Closed_Text').style.display='none'; document.getElementById('_319_336_Open_Image').style.display='inline'; document.getElementById('_319_336_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_319_336_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_319_336_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;初始化GUI资源的缺省路径</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::DefaultResourceProvider</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;static_cast</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">CEGUI::DefaultResourceProvider</span><span style="COLOR: #000000">*&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(CEGUI::System::getSingleton().getResourceProvider());<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;rp</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setResourceGroupDirectory(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">schemes</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">../datafiles/schemes/</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;rp</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setResourceGroupDirectory(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">imagesets</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">../datafiles/imagesets/</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;rp</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setResourceGroupDirectory(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">fonts</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">../datafiles/fonts/</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;rp</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setResourceGroupDirectory(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">layouts</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">../datafiles/layouts/</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;rp</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setResourceGroupDirectory(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">looknfeels</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">../datafiles/looknfeel/</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_823_836_Open_Image" onclick="this.style.display='none'; document.getElementById('_823_836_Open_Text').style.display='none'; document.getElementById('_823_836_Closed_Image').style.display='inline'; document.getElementById('_823_836_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_823_836_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_823_836_Closed_Text').style.display='none'; document.getElementById('_823_836_Open_Image').style.display='inline'; document.getElementById('_823_836_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_823_836_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_823_836_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置使用的缺省资源</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Imageset::setDefaultResourceGroup(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">imagesets</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Font::setDefaultResourceGroup(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">fonts</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Scheme::setDefaultResourceGroup(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">schemes</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::WidgetLookManager::setDefaultResourceGroup(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">looknfeels</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::WindowManager::setDefaultResourceGroup(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">layouts</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_1119_1146_Open_Image" onclick="this.style.display='none'; document.getElementById('_1119_1146_Open_Text').style.display='none'; document.getElementById('_1119_1146_Closed_Image').style.display='inline'; document.getElementById('_1119_1146_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1119_1146_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1119_1146_Closed_Text').style.display='none'; document.getElementById('_1119_1146_Open_Image').style.display='inline'; document.getElementById('_1119_1146_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1119_1146_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1119_1146_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置GUI<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;得到GUI样式的图片集</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Imageset</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;taharezlookImage;<br /><img id="_1187_1286_Open_Image" onclick="this.style.display='none'; document.getElementById('_1187_1286_Open_Text').style.display='none'; document.getElementById('_1187_1286_Closed_Image').style.display='inline'; document.getElementById('_1187_1286_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1187_1286_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1187_1286_Closed_Text').style.display='none'; document.getElementById('_1187_1286_Open_Image').style.display='inline'; document.getElementById('_1187_1286_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id="_1187_1286_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1187_1286_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taharezlookImage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CEGUI::ImagesetManager::getSingleton().createImageset(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Vanilla.imageset</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(CEGUI::Exception</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;exc)<br /><img id="_1318_1364_Open_Image" onclick="this.style.display='none'; document.getElementById('_1318_1364_Open_Text').style.display='none'; document.getElementById('_1318_1364_Closed_Image').style.display='inline'; document.getElementById('_1318_1364_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1318_1364_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1318_1364_Closed_Text').style.display='none'; document.getElementById('_1318_1364_Open_Image').style.display='inline'; document.getElementById('_1318_1364_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1318_1364_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1318_1364_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(exc.getMessage().c_str());<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img id="_1367_1377_Open_Image" onclick="this.style.display='none'; document.getElementById('_1367_1377_Open_Text').style.display='none'; document.getElementById('_1367_1377_Closed_Image').style.display='inline'; document.getElementById('_1367_1377_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1367_1377_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1367_1377_Closed_Text').style.display='none'; document.getElementById('_1367_1377_Open_Image').style.display='inline'; document.getElementById('_1367_1377_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1367_1377_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1367_1377_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置鼠标图标</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::System::getSingleton().setDefaultMouseCursor(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">taharezlookImage</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getImage(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">MouseArrow</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img id="_1477_1485_Open_Image" onclick="this.style.display='none'; document.getElementById('_1477_1485_Open_Text').style.display='none'; document.getElementById('_1477_1485_Closed_Image').style.display='inline'; document.getElementById('_1477_1485_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1477_1485_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1477_1485_Closed_Text').style.display='none'; document.getElementById('_1477_1485_Open_Image').style.display='inline'; document.getElementById('_1477_1485_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1477_1485_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1477_1485_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置字体</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::FontManager::getSingleton().createFont(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">simfang.font</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img id="_1552_1563_Open_Image" onclick="this.style.display='none'; document.getElementById('_1552_1563_Open_Text').style.display='none'; document.getElementById('_1552_1563_Closed_Image').style.display='inline'; document.getElementById('_1552_1563_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1552_1563_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1552_1563_Closed_Text').style.display='none'; document.getElementById('_1552_1563_Open_Image').style.display='inline'; document.getElementById('_1552_1563_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1552_1563_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1552_1563_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置GUI皮肤</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::WidgetLookManager::getSingleton().parseLookNFeelSpecification(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Vanilla.looknfeel</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img id="_1658_1669_Open_Image" onclick="this.style.display='none'; document.getElementById('_1658_1669_Open_Text').style.display='none'; document.getElementById('_1658_1669_Closed_Image').style.display='inline'; document.getElementById('_1658_1669_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1658_1669_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1658_1669_Closed_Text').style.display='none'; document.getElementById('_1658_1669_Open_Image').style.display='inline'; document.getElementById('_1658_1669_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1658_1669_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1658_1669_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;载入GUI规划</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::SchemeManager::getSingleton().loadScheme(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">VanillaSkin.scheme</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_1743_1755_Open_Image" onclick="this.style.display='none'; document.getElementById('_1743_1755_Open_Text').style.display='none'; document.getElementById('_1743_1755_Closed_Image').style.display='inline'; document.getElementById('_1743_1755_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1743_1755_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1743_1755_Closed_Text').style.display='none'; document.getElementById('_1743_1755_Open_Image').style.display='inline'; document.getElementById('_1743_1755_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1743_1755_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1743_1755_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;得到窗口管理单件</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::WindowManager</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;winMgr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CEGUI::WindowManager::getSingleton();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img id="_1828_1838_Open_Image" onclick="this.style.display='none'; document.getElementById('_1828_1838_Open_Text').style.display='none'; document.getElementById('_1828_1838_Closed_Image').style.display='inline'; document.getElementById('_1828_1838_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1828_1838_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1828_1838_Closed_Text').style.display='none'; document.getElementById('_1828_1838_Open_Image').style.display='inline'; document.getElementById('_1828_1838_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1828_1838_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1828_1838_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;创建顶层UI</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;_pGameGUI&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;winMgr.createWindow(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">DefaultWindow</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">root_ui</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img id="_1903_1937_Open_Image" onclick="this.style.display='none'; document.getElementById('_1903_1937_Open_Text').style.display='none'; document.getElementById('_1903_1937_Closed_Image').style.display='inline'; document.getElementById('_1903_1937_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1903_1937_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1903_1937_Closed_Text').style.display='none'; document.getElementById('_1903_1937_Open_Image').style.display='inline'; document.getElementById('_1903_1937_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1903_1937_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1903_1937_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;设置GUI的Sheet(Sheet是CEGUI中窗口的容器)</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::System::getSingleton().setGUISheet(_pGameGUI);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="_1996_2019_Open_Image" onclick="this.style.display='none'; document.getElementById('_1996_2019_Open_Text').style.display='none'; document.getElementById('_1996_2019_Closed_Image').style.display='inline'; document.getElementById('_1996_2019_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1996_2019_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1996_2019_Closed_Text').style.display='none'; document.getElementById('_1996_2019_Open_Image').style.display='inline'; document.getElementById('_1996_2019_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1996_2019_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1996_2019_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;从GUISystem中载入所有场景UI</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LoadAllUI();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;GUISystem::LoadAllUI()<br /><img id="_2080_2373_Open_Image" onclick="this.style.display='none'; document.getElementById('_2080_2373_Open_Text').style.display='none'; document.getElementById('_2080_2373_Closed_Image').style.display='inline'; document.getElementById('_2080_2373_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2080_2373_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2080_2373_Closed_Text').style.display='none'; document.getElementById('_2080_2373_Open_Image').style.display='inline'; document.getElementById('_2080_2373_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2080_2373_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2080_2373_Open_Text"><span style="COLOR: #000000">{<br /><img id="_2083_2104_Open_Image" onclick="this.style.display='none'; document.getElementById('_2083_2104_Open_Text').style.display='none'; document.getElementById('_2083_2104_Closed_Image').style.display='inline'; document.getElementById('_2083_2104_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2083_2104_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2083_2104_Closed_Text').style.display='none'; document.getElementById('_2083_2104_Open_Image').style.display='inline'; document.getElementById('_2083_2104_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2083_2104_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2083_2104_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;生成所有的UI对象，并放入映射表中</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;UIObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pUIObject&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ChatUI;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_UIMap.insert(make_pair(pUIObject</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetID()&nbsp;,&nbsp;pUIObject));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;pUIObject&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SystemUI;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_UIMap.insert(make_pair(pUIObject</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetID()&nbsp;,&nbsp;pUIObject));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;pUIObject&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SmallMapUI;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_UIMap.insert(make_pair(pUIObject</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetID()&nbsp;,&nbsp;pUIObject));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;GUISystem::LoadCurUI(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sceneId)<br /><img id="_2415_2869_Open_Image" onclick="this.style.display='none'; document.getElementById('_2415_2869_Open_Text').style.display='none'; document.getElementById('_2415_2869_Closed_Image').style.display='inline'; document.getElementById('_2415_2869_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2415_2869_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2415_2869_Closed_Text').style.display='none'; document.getElementById('_2415_2869_Open_Image').style.display='inline'; document.getElementById('_2415_2869_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2415_2869_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2415_2869_Open_Text"><span style="COLOR: #000000">{<br /><img id="_2418_2444_Open_Image" onclick="this.style.display='none'; document.getElementById('_2418_2444_Open_Text').style.display='none'; document.getElementById('_2418_2444_Closed_Image').style.display='inline'; document.getElementById('_2418_2444_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2418_2444_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2418_2444_Closed_Text').style.display='none'; document.getElementById('_2418_2444_Open_Image').style.display='inline'; document.getElementById('_2418_2444_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2418_2444_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2418_2444_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;从顶层UI中移除所有UI&nbsp;先清空当前UI列表</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">UIObject</span><span style="COLOR: #000000">*&gt;</span><span style="COLOR: #000000">::iterator&nbsp;Iter;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;UIObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;_curUIList.begin();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(&nbsp;;&nbsp;iter&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;_curUIList.end()&nbsp;;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iter)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pGameGUI</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">removeChildWindow((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">iter)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetWnd());<br /><img id="_2645_2661_Open_Image" onclick="this.style.display='none'; document.getElementById('_2645_2661_Open_Text').style.display='none'; document.getElementById('_2645_2661_Closed_Image').style.display='inline'; document.getElementById('_2645_2661_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2645_2661_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2645_2661_Closed_Text').style.display='none'; document.getElementById('_2645_2661_Open_Image').style.display='inline'; document.getElementById('_2645_2661_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2645_2661_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2645_2661_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;从脚本中载入场景UI数据</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;std::ostringstream&nbsp;sid;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">sui</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;sceneId;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ReadFromScript(sid.str());<br /><img id="_2742_2752_Open_Image" onclick="this.style.display='none'; document.getElementById('_2742_2752_Open_Text').style.display='none'; document.getElementById('_2742_2752_Closed_Image').style.display='inline'; document.getElementById('_2742_2752_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2742_2752_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2742_2752_Closed_Text').style.display='none'; document.getElementById('_2742_2752_Open_Image').style.display='inline'; document.getElementById('_2742_2752_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2742_2752_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2742_2752_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;加入场景UI</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(iter&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;_curUIList.begin()&nbsp;;&nbsp;iter&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;_curUIList.end()&nbsp;;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iter)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pGameGUI</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">addChildWindow((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">iter)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">InitUI());<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;GUISystem::ReadFromScript(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;id)<br /><img id="_2926_3257_Open_Image" onclick="this.style.display='none'; document.getElementById('_2926_3257_Open_Text').style.display='none'; document.getElementById('_2926_3257_Closed_Image').style.display='inline'; document.getElementById('_2926_3257_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2926_3257_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2926_3257_Closed_Text').style.display='none'; document.getElementById('_2926_3257_Open_Image').style.display='inline'; document.getElementById('_2926_3257_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2926_3257_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2926_3257_Open_Text"><span style="COLOR: #000000">{<br /><img id="_2929_2965_Open_Image" onclick="this.style.display='none'; document.getElementById('_2929_2965_Open_Text').style.display='none'; document.getElementById('_2929_2965_Closed_Image').style.display='inline'; document.getElementById('_2929_2965_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2929_2965_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2929_2965_Closed_Text').style.display='none'; document.getElementById('_2929_2965_Open_Image').style.display='inline'; document.getElementById('_2929_2965_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2929_2965_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2929_2965_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;从Lua脚本中载入当前场景需要的UI，存入_curUIList中</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LuaScriptSystem::GetSingleton().LoadScript(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">./script/sui.lua</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;pStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem::GetSingleton().GetValue(id.c_str()&nbsp;,&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(pStr)<br /><img id="_3151_3254_Open_Image" onclick="this.style.display='none'; document.getElementById('_3151_3254_Open_Text').style.display='none'; document.getElementById('_3151_3254_Closed_Image').style.display='inline'; document.getElementById('_3151_3254_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_3151_3254_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3151_3254_Closed_Text').style.display='none'; document.getElementById('_3151_3254_Open_Image').style.display='inline'; document.getElementById('_3151_3254_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_3151_3254_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3151_3254_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_curUIList.insert(_UIMap[pStr]);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem::GetSingleton().GetValue(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">sui1</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;,&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />std::</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">UIObject</span><span style="COLOR: #000000">*&gt;&amp;</span><span style="COLOR: #000000">&nbsp;GUISystem::GetCurUIList()<br /><img id="_3308_3330_Open_Image" onclick="this.style.display='none'; document.getElementById('_3308_3330_Open_Text').style.display='none'; document.getElementById('_3308_3330_Closed_Image').style.display='inline'; document.getElementById('_3308_3330_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_3308_3330_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3308_3330_Closed_Text').style.display='none'; document.getElementById('_3308_3330_Open_Image').style.display='inline'; document.getElementById('_3308_3330_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_3308_3330_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3308_3330_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_curUIList;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />UIObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GUISystem::GetUIObject(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;id)<br /><img id="_3388_3494_Open_Image" onclick="this.style.display='none'; document.getElementById('_3388_3494_Open_Text').style.display='none'; document.getElementById('_3388_3494_Closed_Image').style.display='inline'; document.getElementById('_3388_3494_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_3388_3494_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3388_3494_Closed_Text').style.display='none'; document.getElementById('_3388_3494_Open_Image').style.display='inline'; document.getElementById('_3388_3494_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_3388_3494_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3388_3494_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;MapIter&nbsp;iter&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;_UIMap.find(id);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(iter&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;_UIMap.end())<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;iter</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">second;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中，GUISystem::ReadFromScript作用是从Lua脚本中读取当前场景对应的UI组件名。之所以采用Lua作为数据脚本，是因为其自身就为实现数据脚本提供了很好的支持，需要编写的解析代码与采用xml、ini相比会少很多。本例利用了Lua中的数组来存储UI组建名，是Lua作为数据脚本一个不错的示例：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000">--&nbsp;Scene&nbsp;GUI<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />sui1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">}<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />sui2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">}<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />sui3&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">}<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span></div>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面是Lua脚本解析类，也是一个Singleton：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Singleton.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">lua.hpp</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Singleton</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="_117_336_Open_Image" onclick="this.style.display='none'; document.getElementById('_117_336_Open_Text').style.display='none'; document.getElementById('_117_336_Closed_Image').style.display='inline'; document.getElementById('_117_336_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_117_336_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_117_336_Closed_Text').style.display='none'; document.getElementById('_117_336_Open_Image').style.display='inline'; document.getElementById('_117_336_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_117_336_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_117_336_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;SINGLETON2(LuaScriptSystem)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;LuaScriptSystem();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">LuaScriptSystem();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;LoadScript(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;filename);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetValue(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;id&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br /><img id="_322_335_Open_Image" onclick="this.style.display='none'; document.getElementById('_322_335_Open_Text').style.display='none'; document.getElementById('_322_335_Closed_Image').style.display='inline'; document.getElementById('_322_335_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_322_335_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_322_335_Closed_Text').style.display='none'; document.getElementById('_322_335_Open_Image').style.display='inline'; document.getElementById('_322_335_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;lua_State</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;_pLuaVM;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_322_335_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_322_335_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;Lua状态对象指针</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" /><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;</span></div>
</div>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img id="_0_23_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_23_Open_Text').style.display='none'; document.getElementById('_0_23_Closed_Image').style.display='inline'; document.getElementById('_0_23_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_0_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_0_23_Closed_Text').style.display='none'; document.getElementById('_0_23_Open_Image').style.display='inline'; document.getElementById('_0_23_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /><span id="_0_23_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_0_23_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;LuaScriptSystem.cpp</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">LuaScriptSystem.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />LuaScriptSystem::LuaScriptSystem()<br /><img id="_90_127_Open_Image" onclick="this.style.display='none'; document.getElementById('_90_127_Open_Text').style.display='none'; document.getElementById('_90_127_Closed_Image').style.display='inline'; document.getElementById('_90_127_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_90_127_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_90_127_Closed_Text').style.display='none'; document.getElementById('_90_127_Open_Image').style.display='inline'; document.getElementById('_90_127_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_90_127_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_90_127_Open_Text"><span style="COLOR: #000000">{<br /><img id="_93_103_Open_Image" onclick="this.style.display='none'; document.getElementById('_93_103_Open_Text').style.display='none'; document.getElementById('_93_103_Closed_Image').style.display='inline'; document.getElementById('_93_103_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_93_103_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_93_103_Closed_Text').style.display='none'; document.getElementById('_93_103_Open_Image').style.display='inline'; document.getElementById('_93_103_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_93_103_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_93_103_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;初始化lua</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;_pLuaVM&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;lua_open();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem::LoadScript(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;filename)<br /><img id="_179_248_Open_Image" onclick="this.style.display='none'; document.getElementById('_179_248_Open_Text').style.display='none'; document.getElementById('_179_248_Closed_Image').style.display='inline'; document.getElementById('_179_248_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_179_248_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_179_248_Closed_Text').style.display='none'; document.getElementById('_179_248_Open_Image').style.display='inline'; document.getElementById('_179_248_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_179_248_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_179_248_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(luaL_dofile(_pLuaVM&nbsp;,&nbsp;filename))<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;LuaScriptSystem::GetValue(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;id&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index)<br /><img id="_317_530_Open_Image" onclick="this.style.display='none'; document.getElementById('_317_530_Open_Text').style.display='none'; document.getElementById('_317_530_Closed_Image').style.display='inline'; document.getElementById('_317_530_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_317_530_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_317_530_Closed_Text').style.display='none'; document.getElementById('_317_530_Open_Image').style.display='inline'; document.getElementById('_317_530_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_317_530_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_317_530_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pstr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br /><img id="_375_385_Open_Image" onclick="this.style.display='none'; document.getElementById('_375_385_Open_Text').style.display='none'; document.getElementById('_375_385_Closed_Image').style.display='inline'; document.getElementById('_375_385_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_375_385_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_375_385_Closed_Text').style.display='none'; document.getElementById('_375_385_Open_Image').style.display='inline'; document.getElementById('_375_385_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;lua_getglobal(_pLuaVM&nbsp;,&nbsp;id);&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_375_385_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_375_385_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;得到配置实体</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_rawgeti(_pLuaVM&nbsp;,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;,&nbsp;index);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(lua_isstring(_pLuaVM&nbsp;,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;lua_tostring(_pLuaVM&nbsp;,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(_pLuaVM&nbsp;,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pstr;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />LuaScriptSystem::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">LuaScriptSystem()<br /><img id="_569_603_Open_Image" onclick="this.style.display='none'; document.getElementById('_569_603_Open_Text').style.display='none'; document.getElementById('_569_603_Closed_Image').style.display='inline'; document.getElementById('_569_603_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_569_603_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_569_603_Closed_Text').style.display='none'; document.getElementById('_569_603_Open_Image').style.display='inline'; document.getElementById('_569_603_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_569_603_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_569_603_Open_Text"><span style="COLOR: #000000">{<br /><img id="_572_581_Open_Image" onclick="this.style.display='none'; document.getElementById('_572_581_Open_Text').style.display='none'; document.getElementById('_572_581_Closed_Image').style.display='inline'; document.getElementById('_572_581_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_572_581_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_572_581_Closed_Text').style.display='none'; document.getElementById('_572_581_Open_Image').style.display='inline'; document.getElementById('_572_581_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_572_581_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_572_581_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;关闭lua</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_close(_pLuaVM);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lua与外界的交流需要依靠解释器维护的栈来实现，这一点对于使用Lua的开发者应该铭记于心。在GetValue中，利用lua_getglobal来得到lua脚本中全局变量，如&quot;sui1&quot;，此时，栈顶（用索引-1来表示）就应该保存着该全局变量。利用lua_rawgeti传入数组位于栈的索引（-1），以及数组索引（index从1开始），就能够得到对应索引的值，结果自然也是放在栈中，想想push一下，现在栈顶应该保存着结果了，最后用lua_tostring来得到。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个示例中，我们引入了三个UI组件，分别是ChatUI、SmallMapUI和SystemUI，对应聊天框、小地图、系统按钮条。为了演示它们之间的交互，我们规定ChatUI受SystemUI中Chat按钮的影响，可以让其显示或者隐藏，同时，SmallMapUI能够接受鼠标点击，并在ChatUI的文本框中显示一些点击信息。当然，这三个UI组件还必须对应着CEGUI的三个layout脚本文件。下面是它们的实现代码：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img id="_0_14_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_14_Open_Text').style.display='none'; document.getElementById('_0_14_Closed_Image').style.display='inline'; document.getElementById('_0_14_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_0_14_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_0_14_Closed_Text').style.display='none'; document.getElementById('_0_14_Open_Image').style.display='inline'; document.getElementById('_0_14_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /><span id="_0_14_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_0_14_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;UIObject.h</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">CEGUI.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;UIObject<br /><img id="_65_321_Open_Image" onclick="this.style.display='none'; document.getElementById('_65_321_Open_Text').style.display='none'; document.getElementById('_65_321_Closed_Image').style.display='inline'; document.getElementById('_65_321_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_65_321_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_65_321_Closed_Text').style.display='none'; document.getElementById('_65_321_Open_Image').style.display='inline'; document.getElementById('_65_321_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_65_321_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_65_321_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;_id;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;_pWnd;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img id="_157_158_Open_Image" onclick="this.style.display='none'; document.getElementById('_157_158_Open_Text').style.display='none'; document.getElementById('_157_158_Closed_Image').style.display='inline'; document.getElementById('_157_158_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_157_158_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_157_158_Closed_Text').style.display='none'; document.getElementById('_157_158_Open_Image').style.display='inline'; document.getElementById('_157_158_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;UIObject(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)&nbsp;:&nbsp;_pWnd(NULL)&nbsp;</span><span id="_157_158_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_157_158_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="_185_186_Open_Image" onclick="this.style.display='none'; document.getElementById('_185_186_Open_Text').style.display='none'; document.getElementById('_185_186_Closed_Image').style.display='inline'; document.getElementById('_185_186_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_185_186_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_185_186_Closed_Text').style.display='none'; document.getElementById('_185_186_Open_Image').style.display='inline'; document.getElementById('_185_186_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">UIObject(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)&nbsp;</span><span id="_185_186_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_185_186_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="_222_234_Open_Image" onclick="this.style.display='none'; document.getElementById('_222_234_Open_Text').style.display='none'; document.getElementById('_222_234_Closed_Image').style.display='inline'; document.getElementById('_222_234_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_222_234_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_222_234_Closed_Text').style.display='none'; document.getElementById('_222_234_Open_Image').style.display='inline'; document.getElementById('_222_234_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;GetID()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id="_222_234_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_222_234_Open_Text"><span style="COLOR: #000000">{</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_id;}</span></span><span style="COLOR: #000000"><br /><img id="_267_281_Open_Image" onclick="this.style.display='none'; document.getElementById('_267_281_Open_Text').style.display='none'; document.getElementById('_267_281_Closed_Image').style.display='inline'; document.getElementById('_267_281_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_267_281_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_267_281_Closed_Text').style.display='none'; document.getElementById('_267_281_Open_Image').style.display='inline'; document.getElementById('_267_281_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetWnd()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id="_267_281_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_267_281_Open_Text"><span style="COLOR: #000000">{</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_pWnd;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;InitUI()&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_325_337_Open_Image" onclick="this.style.display='none'; document.getElementById('_325_337_Open_Text').style.display='none'; document.getElementById('_325_337_Closed_Image').style.display='inline'; document.getElementById('_325_337_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_325_337_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_325_337_Closed_Text').style.display='none'; document.getElementById('_325_337_Open_Image').style.display='inline'; document.getElementById('_325_337_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_325_337_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_325_337_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;ChatUI.h</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">uiobject.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ChatUI&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;UIObject<br /><img id="_405_472_Open_Image" onclick="this.style.display='none'; document.getElementById('_405_472_Open_Text').style.display='none'; document.getElementById('_405_472_Closed_Image').style.display='inline'; document.getElementById('_405_472_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_405_472_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_405_472_Closed_Text').style.display='none'; document.getElementById('_405_472_Open_Image').style.display='inline'; document.getElementById('_405_472_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_405_472_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_405_472_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ChatUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">ChatUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;InitUI();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_476_490_Open_Image" onclick="this.style.display='none'; document.getElementById('_476_490_Open_Text').style.display='none'; document.getElementById('_476_490_Closed_Image').style.display='inline'; document.getElementById('_476_490_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_476_490_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_476_490_Closed_Text').style.display='none'; document.getElementById('_476_490_Open_Image').style.display='inline'; document.getElementById('_476_490_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_476_490_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_476_490_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;ChatUI.cpp</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">chatui.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;CEGUI;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />ChatUI::ChatUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_557_576_Open_Image" onclick="this.style.display='none'; document.getElementById('_557_576_Open_Text').style.display='none'; document.getElementById('_557_576_Closed_Image').style.display='inline'; document.getElementById('_557_576_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_557_576_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_557_576_Closed_Text').style.display='none'; document.getElementById('_557_576_Open_Image').style.display='inline'; document.getElementById('_557_576_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_557_576_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_557_576_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />ChatUI::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">ChatUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_601_604_Open_Image" onclick="this.style.display='none'; document.getElementById('_601_604_Open_Text').style.display='none'; document.getElementById('_601_604_Closed_Image').style.display='inline'; document.getElementById('_601_604_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_601_604_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_601_604_Closed_Text').style.display='none'; document.getElementById('_601_604_Open_Image').style.display='inline'; document.getElementById('_601_604_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_601_604_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_601_604_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ChatUI::InitUI()<br /><img id="_632_790_Open_Image" onclick="this.style.display='none'; document.getElementById('_632_790_Open_Text').style.display='none'; document.getElementById('_632_790_Closed_Image').style.display='inline'; document.getElementById('_632_790_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_632_790_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_632_790_Closed_Text').style.display='none'; document.getElementById('_632_790_Open_Image').style.display='inline'; document.getElementById('_632_790_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_632_790_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_632_790_Open_Text"><span style="COLOR: #000000">{<br /><img id="_635_650_Open_Image" onclick="this.style.display='none'; document.getElementById('_635_650_Open_Text').style.display='none'; document.getElementById('_635_650_Closed_Image').style.display='inline'; document.getElementById('_635_650_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_635_650_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_635_650_Closed_Text').style.display='none'; document.getElementById('_635_650_Open_Image').style.display='inline'; document.getElementById('_635_650_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_635_650_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_635_650_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;简单载入，没有消息处理</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;_pWnd)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;WindowManager::getSingleton().loadWindowLayout(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI.layout</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_748_758_Open_Image" onclick="this.style.display='none'; document.getElementById('_748_758_Open_Text').style.display='none'; document.getElementById('_748_758_Closed_Image').style.display='inline'; document.getElementById('_748_758_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_748_758_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_748_758_Closed_Text').style.display='none'; document.getElementById('_748_758_Open_Image').style.display='inline'; document.getElementById('_748_758_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_748_758_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_748_758_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;先隐藏聊天框</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;_pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">hide();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_pWnd;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_793_809_Open_Image" onclick="this.style.display='none'; document.getElementById('_793_809_Open_Text').style.display='none'; document.getElementById('_793_809_Closed_Image').style.display='inline'; document.getElementById('_793_809_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_793_809_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_793_809_Closed_Text').style.display='none'; document.getElementById('_793_809_Open_Image').style.display='inline'; document.getElementById('_793_809_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_793_809_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_793_809_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;SmallMapUI.h</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">uiobject.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SmallMapUI&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;UIObject<br /><img id="_881_1019_Open_Image" onclick="this.style.display='none'; document.getElementById('_881_1019_Open_Text').style.display='none'; document.getElementById('_881_1019_Closed_Image').style.display='inline'; document.getElementById('_881_1019_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_881_1019_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_881_1019_Closed_Text').style.display='none'; document.getElementById('_881_1019_Open_Image').style.display='inline'; document.getElementById('_881_1019_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_881_1019_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_881_1019_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;SmallMapUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">SmallMapUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;InitUI();<br /><img id="_957_977_Open_Image" onclick="this.style.display='none'; document.getElementById('_957_977_Open_Text').style.display='none'; document.getElementById('_957_977_Closed_Image').style.display='inline'; document.getElementById('_957_977_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_957_977_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_957_977_Closed_Text').style.display='none'; document.getElementById('_957_977_Open_Image').style.display='inline'; document.getElementById('_957_977_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_957_977_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_957_977_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">*&nbsp;在小地图上点击的消息响应函数&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;Click(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_1023_1041_Open_Image" onclick="this.style.display='none'; document.getElementById('_1023_1041_Open_Text').style.display='none'; document.getElementById('_1023_1041_Closed_Image').style.display='inline'; document.getElementById('_1023_1041_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_1023_1041_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1023_1041_Closed_Text').style.display='none'; document.getElementById('_1023_1041_Open_Image').style.display='inline'; document.getElementById('_1023_1041_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_1023_1041_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1023_1041_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;SmallMapUI.cpp</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">smallmapui.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">GUISystem.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;CEGUI;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />SmallMapUI::SmallMapUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_1143_1166_Open_Image" onclick="this.style.display='none'; document.getElementById('_1143_1166_Open_Text').style.display='none'; document.getElementById('_1143_1166_Closed_Image').style.display='inline'; document.getElementById('_1143_1166_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_1143_1166_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1143_1166_Closed_Text').style.display='none'; document.getElementById('_1143_1166_Open_Image').style.display='inline'; document.getElementById('_1143_1166_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_1143_1166_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1143_1166_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />SmallMapUI::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">SmallMapUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_1199_1202_Open_Image" onclick="this.style.display='none'; document.getElementById('_1199_1202_Open_Text').style.display='none'; document.getElementById('_1199_1202_Closed_Image').style.display='inline'; document.getElementById('_1199_1202_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_1199_1202_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1199_1202_Closed_Text').style.display='none'; document.getElementById('_1199_1202_Open_Image').style.display='inline'; document.getElementById('_1199_1202_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_1199_1202_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1199_1202_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;SmallMapUI::InitUI()<br /><img id="_1234_1763_Open_Image" onclick="this.style.display='none'; document.getElementById('_1234_1763_Open_Text').style.display='none'; document.getElementById('_1234_1763_Closed_Image').style.display='inline'; document.getElementById('_1234_1763_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_1234_1763_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1234_1763_Closed_Text').style.display='none'; document.getElementById('_1234_1763_Open_Image').style.display='inline'; document.getElementById('_1234_1763_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_1234_1763_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1234_1763_Open_Text"><span style="COLOR: #000000">{<br /><img id="_1237_1261_Open_Image" onclick="this.style.display='none'; document.getElementById('_1237_1261_Open_Text').style.display='none'; document.getElementById('_1237_1261_Closed_Image').style.display='inline'; document.getElementById('_1237_1261_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1237_1261_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1237_1261_Closed_Text').style.display='none'; document.getElementById('_1237_1261_Open_Image').style.display='inline'; document.getElementById('_1237_1261_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1237_1261_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1237_1261_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;简单载入，只处理在静态二维地图上点击左键</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;_pWnd&nbsp;)<br /><img id="_1284_1745_Open_Image" onclick="this.style.display='none'; document.getElementById('_1284_1745_Open_Text').style.display='none'; document.getElementById('_1284_1745_Closed_Image').style.display='inline'; document.getElementById('_1284_1745_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1284_1745_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1284_1745_Closed_Text').style.display='none'; document.getElementById('_1284_1745_Open_Image').style.display='inline'; document.getElementById('_1284_1745_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1284_1745_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1284_1745_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;WindowManager::getSingleton().loadWindowLayout(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI.layout</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_1367_1379_Open_Image" onclick="this.style.display='none'; document.getElementById('_1367_1379_Open_Text').style.display='none'; document.getElementById('_1367_1379_Closed_Image').style.display='inline'; document.getElementById('_1367_1379_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1367_1379_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1367_1379_Closed_Text').style.display='none'; document.getElementById('_1367_1379_Open_Image').style.display='inline'; document.getElementById('_1367_1379_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1367_1379_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1367_1379_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;载入一幅静态地图</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImagesetManager::getSingleton().createImagesetFromImageFile(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMap</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ZoneMap.jpg</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getChild(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI/StaticImage</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setProperty(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Image</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">set:SmallMap&nbsp;image:full_image</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_1572_1584_Open_Image" onclick="this.style.display='none'; document.getElementById('_1572_1584_Open_Text').style.display='none'; document.getElementById('_1572_1584_Closed_Image').style.display='inline'; document.getElementById('_1572_1584_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1572_1584_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1572_1584_Closed_Text').style.display='none'; document.getElementById('_1572_1584_Open_Image').style.display='inline'; document.getElementById('_1572_1584_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1572_1584_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1572_1584_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;处理鼠标点击事件</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getChild(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SmallMapUI/StaticImage</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">subscribeEvent(<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window::EventMouseButtonDown,&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Event::Subscriber(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">SmallMapUI::Click&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_pWnd;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;SmallMapUI::Click(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e)<br /><img id="_1816_2101_Open_Image" onclick="this.style.display='none'; document.getElementById('_1816_2101_Open_Text').style.display='none'; document.getElementById('_1816_2101_Closed_Image').style.display='inline'; document.getElementById('_1816_2101_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_1816_2101_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1816_2101_Closed_Text').style.display='none'; document.getElementById('_1816_2101_Open_Image').style.display='inline'; document.getElementById('_1816_2101_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_1816_2101_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1816_2101_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;text[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;sprintf(text&nbsp;,&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">你点击了地图，坐标为(%.1f&nbsp;,&nbsp;%.1f)</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;,&nbsp;static_cast</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;MouseEventArgs</span><span style="COLOR: #000000">&amp;&gt;</span><span style="COLOR: #000000">(e).position.d_x&nbsp;,&nbsp;static_cast</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;MouseEventArgs</span><span style="COLOR: #000000">&amp;&gt;</span><span style="COLOR: #000000">(e).position.d_x);<br /><img id="_1986_2004_Open_Image" onclick="this.style.display='none'; document.getElementById('_1986_2004_Open_Text').style.display='none'; document.getElementById('_1986_2004_Closed_Image').style.display='inline'; document.getElementById('_1986_2004_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_1986_2004_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_1986_2004_Closed_Text').style.display='none'; document.getElementById('_1986_2004_Open_Image').style.display='inline'; document.getElementById('_1986_2004_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1986_2004_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_1986_2004_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;通过CEGUI直接访问聊天框</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WindowManager::getSingleton().getWindow(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI/MsgBox</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setText((utf8</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)text);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_2104_2118_Open_Image" onclick="this.style.display='none'; document.getElementById('_2104_2118_Open_Text').style.display='none'; document.getElementById('_2104_2118_Closed_Image').style.display='inline'; document.getElementById('_2104_2118_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2104_2118_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2104_2118_Closed_Text').style.display='none'; document.getElementById('_2104_2118_Open_Image').style.display='inline'; document.getElementById('_2104_2118_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2104_2118_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2104_2118_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;SystemUI.h</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000">&nbsp;once</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">uiobject.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SystemUI&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;UIObject<br /><img id="_2188_2367_Open_Image" onclick="this.style.display='none'; document.getElementById('_2188_2367_Open_Text').style.display='none'; document.getElementById('_2188_2367_Closed_Image').style.display='inline'; document.getElementById('_2188_2367_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2188_2367_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2188_2367_Closed_Text').style.display='none'; document.getElementById('_2188_2367_Open_Image').style.display='inline'; document.getElementById('_2188_2367_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2188_2367_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2188_2367_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;SystemUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">SystemUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;InitUI();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;SystemUI::OnChatBtn(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;SystemUI::OnExitBtn(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img id="_2371_2387_Open_Image" onclick="this.style.display='none'; document.getElementById('_2371_2387_Open_Text').style.display='none'; document.getElementById('_2371_2387_Closed_Image').style.display='inline'; document.getElementById('_2371_2387_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2371_2387_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2371_2387_Closed_Text').style.display='none'; document.getElementById('_2371_2387_Open_Image').style.display='inline'; document.getElementById('_2371_2387_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2371_2387_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2371_2387_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;SystemUI.cpp</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">GUISystem.h</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />SystemUI::SystemUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_2459_2480_Open_Image" onclick="this.style.display='none'; document.getElementById('_2459_2480_Open_Text').style.display='none'; document.getElementById('_2459_2480_Closed_Image').style.display='inline'; document.getElementById('_2459_2480_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2459_2480_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2459_2480_Closed_Text').style.display='none'; document.getElementById('_2459_2480_Open_Image').style.display='inline'; document.getElementById('_2459_2480_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2459_2480_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2459_2480_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;_id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />SystemUI::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">SystemUI(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br /><img id="_2509_2512_Open_Image" onclick="this.style.display='none'; document.getElementById('_2509_2512_Open_Text').style.display='none'; document.getElementById('_2509_2512_Closed_Image').style.display='inline'; document.getElementById('_2509_2512_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2509_2512_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2509_2512_Closed_Text').style.display='none'; document.getElementById('_2509_2512_Open_Image').style.display='inline'; document.getElementById('_2509_2512_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2509_2512_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2509_2512_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;SystemUI::InitUI()<br /><img id="_2549_3023_Open_Image" onclick="this.style.display='none'; document.getElementById('_2549_3023_Open_Text').style.display='none'; document.getElementById('_2549_3023_Closed_Image').style.display='inline'; document.getElementById('_2549_3023_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_2549_3023_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2549_3023_Closed_Text').style.display='none'; document.getElementById('_2549_3023_Open_Image').style.display='inline'; document.getElementById('_2549_3023_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_2549_3023_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2549_3023_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;_pWnd)<br /><img id="_2572_3006_Open_Image" onclick="this.style.display='none'; document.getElementById('_2572_3006_Open_Text').style.display='none'; document.getElementById('_2572_3006_Closed_Image').style.display='inline'; document.getElementById('_2572_3006_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2572_3006_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2572_3006_Closed_Text').style.display='none'; document.getElementById('_2572_3006_Open_Image').style.display='inline'; document.getElementById('_2572_3006_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2572_3006_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_2572_3006_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;CEGUI::WindowManager::getSingleton().loadWindowLayout(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI.layout</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img id="_2661_2676_Open_Image" onclick="this.style.display='none'; document.getElementById('_2661_2676_Open_Text').style.display='none'; document.getElementById('_2661_2676_Closed_Image').style.display='inline'; document.getElementById('_2661_2676_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2661_2676_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2661_2676_Closed_Text').style.display='none'; document.getElementById('_2661_2676_Open_Image').style.display='inline'; document.getElementById('_2661_2676_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2661_2676_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2661_2676_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;处理ChatBtn消息</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getChild(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI/ChatBtn</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">subscribeEvent(<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window::EventMouseButtonDown,&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Event::Subscriber(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">SystemUI::OnChatBtn&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">));<br /><img id="_2834_2849_Open_Image" onclick="this.style.display='none'; document.getElementById('_2834_2849_Open_Text').style.display='none'; document.getElementById('_2834_2849_Closed_Image').style.display='inline'; document.getElementById('_2834_2849_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_2834_2849_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_2834_2849_Closed_Text').style.display='none'; document.getElementById('_2834_2849_Open_Image').style.display='inline'; document.getElementById('_2834_2849_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_2834_2849_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_2834_2849_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;处理ExitBtn消息</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getChild(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">SystemUI/ExitBtn</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">subscribeEvent(<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window::EventMouseButtonDown,&nbsp;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Event::Subscriber(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">SystemUI::OnExitBtn&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">));<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_pWnd;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;SystemUI::OnChatBtn(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e)<br /><img id="_3078_3312_Open_Image" onclick="this.style.display='none'; document.getElementById('_3078_3312_Open_Text').style.display='none'; document.getElementById('_3078_3312_Closed_Image').style.display='inline'; document.getElementById('_3078_3312_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_3078_3312_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3078_3312_Closed_Text').style.display='none'; document.getElementById('_3078_3312_Open_Image').style.display='inline'; document.getElementById('_3078_3312_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_3078_3312_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3078_3312_Open_Text"><span style="COLOR: #000000">{<br /><img id="_3081_3090_Open_Image" onclick="this.style.display='none'; document.getElementById('_3081_3090_Open_Text').style.display='none'; document.getElementById('_3081_3090_Closed_Image').style.display='inline'; document.getElementById('_3081_3090_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_3081_3090_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3081_3090_Closed_Text').style.display='none'; document.getElementById('_3081_3090_Open_Image').style.display='inline'; document.getElementById('_3081_3090_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_3081_3090_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_3081_3090_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;显示聊天框</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;UIObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pUIObj&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GUISystem::GetSingleton().GetUIObject(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">ChatUI</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pUIObj)<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::Window</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pWnd&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pUIObj</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetWnd();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pWnd)<br /><img id="_3241_3295_Open_Image" onclick="this.style.display='none'; document.getElementById('_3241_3295_Open_Text').style.display='none'; document.getElementById('_3241_3295_Closed_Image').style.display='inline'; document.getElementById('_3241_3295_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_3241_3295_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3241_3295_Closed_Text').style.display='none'; document.getElementById('_3241_3295_Open_Image').style.display='inline'; document.getElementById('_3241_3295_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_3241_3295_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3241_3295_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">isVisible()&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">hide()&nbsp;:&nbsp;pWnd</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">show();<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;SystemUI::OnExitBtn(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;CEGUI::EventArgs</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;e)<br /><img id="_3367_3407_Open_Image" onclick="this.style.display='none'; document.getElementById('_3367_3407_Open_Text').style.display='none'; document.getElementById('_3367_3407_Closed_Image').style.display='inline'; document.getElementById('_3367_3407_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img id="_3367_3407_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3367_3407_Closed_Text').style.display='none'; document.getElementById('_3367_3407_Open_Image').style.display='inline'; document.getElementById('_3367_3407_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" /></span><span id="_3367_3407_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_3367_3407_Open_Text"><span style="COLOR: #000000">{<br /><img id="_3370_3379_Open_Image" onclick="this.style.display='none'; document.getElementById('_3370_3379_Open_Text').style.display='none'; document.getElementById('_3370_3379_Closed_Image').style.display='inline'; document.getElementById('_3370_3379_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="_3370_3379_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_3370_3379_Closed_Text').style.display='none'; document.getElementById('_3370_3379_Open_Image').style.display='inline'; document.getElementById('_3370_3379_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_3370_3379_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="_3370_3379_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;简单地退出</span><span style="COLOR: #808080"></span></span><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;::exit(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在使用CEGUILayoutEditor创建layout脚本时，你不能创建一个满屏的DefaultWindow，那样会让造成不能相应其他窗口的问题。但通常Editor会为我们默认创建它，这不要紧，你只需要在保存的layout文件中删除那个顶层的满屏window就可以了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面是程序的运行结果：</p>
<p align="center"><img alt="" border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Snap2.jpg" /></p>                    <div>
                        作者：Lodger007 发表于 2007/12/09 22:47:00 <a href="https://blog.csdn.net/Lodger007/article/details/1926057">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1926057                    </div>
                    <div>
                        阅读：12361 评论：10 <a href="https://blog.csdn.net/Lodger007/article/details/1926057#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]基于组件方式的游戏UI架构设计]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1925478</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1925478</guid>
                <author>Lodger007</author>
                <pubDate>2007/12/09 12:05:00</pubDate>
                <description>
                    <![CDATA[
                         能够像生产汽车那样，将各个部件组装起来就能造出一辆汽车，在软件开发领域一直是个梦想。组件开发思想的出现，让我们离这个梦想更近了一步。组件，意味着高内聚、高复用，我们只需了解其外部接口规格，就能使用其功能，无需知道其内部如何实现及运作。<br />在游戏开发中，UI管理是一个比较麻烦的问题，特别是针对那种需要根据不同场景切换不同UI的游戏，UI的组织和管理尤显重要，能不能像将各个UI（比如：聊天窗口、系统界面）作为一系列的组件来管理呢？下面是笔者在实际开发中采用的一种方案：<br />    <img border="0" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/default.gif" /><br />    根据UI组件的一般划分粒度，将所有UIObject对象在GUISystem初始化时全部生成并放入_uiMap，是合理的，因为这里还没有对每个 UIObject调用InitUI，只是简单的new，完成这些只需要极少时间。LoadCurUI能够让我们只需传入一个场景id号，就可以载入对应的 UI，为了灵活方便，可以将场景id与其对应的UI组件名放在配置文件中。<br />    所有UI组件都必须从UIObject继承而来，其中包含了一个指向具体实现窗口功能的Window对象的指针。这样一个UI类就相当于一个 Window的Wrapper类，以便GUISystem统一管理。对于UI组件之间的交互，通过GUISystem作为中间层，彼此解除了较强的耦合。<br />    在下一篇文章中，我将介绍如何利用CEGUI+Lua实现这种设计方案。                     <div>
                        作者：Lodger007 发表于 2007/12/09 12:05:00 <a href="https://blog.csdn.net/Lodger007/article/details/1925478">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1925478                    </div>
                    <div>
                        阅读：4443 评论：1 <a href="https://blog.csdn.net/Lodger007/article/details/1925478#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]求职历程]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1842944</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1842944</guid>
                <author>Lodger007</author>
                <pubDate>2007/10/25 11:22:00</pubDate>
                <description>
                    <![CDATA[
                    校园招聘时间大概从9月底就陆续展开，由于教研室的项目压得比较紧，在这之前也没有时间去准备。这场战争伊始，有一点不知所措，不过还是被招聘流程约束着一步一步地往下走。最开始是准备中英文简历，关于如果写好简历，网上和书店都有不少的资料，自己感觉不用太花哨（也无需学校Logo等图案），整体格式简洁，重点突出就行。因为现在很多企业都是先通过网投，然后通过网上自动简历筛选（也就是关键字搜索，不过这种搜索应该是比较宽松的，所以建议简历一定要根据应聘职位的需求来修改关键字，这样就会让你每投必中）。<br />IBM GDC应该算是第一家给我面试机会的企业。先是有名的IPAT笔试，题目是全英文的，总共分三部分（PartⅠ是 矩阵排列（就是把行和列变来边去，让你说出字母），PartⅡ是数列猜测（就是连续出现一些字母，让你猜下一个），PartⅢ是数学计算（主要是一些分数的运算，小学理解能力） ），每部分都限定了时间，时间到就收卷。我的笔试感觉并不是很好，但是当天下午就收到了面试通知。在三天之后，我参加了IBM面试，由于时间比较紧张，面试环节由二面合并为一面。面我的是两个男的，一个年龄稍大（肯定是领导），一个比较年轻（肯定是技术人员），面试的问题也是围绕简历展开的（所以简历的一定要写得厚道），那个年纪稍大点的面试官看我简历上先了一些项目管理方面的经验，就主要问我这个方面的问题，而那个年轻的面试管一直埋头于我的简历，只问了两个相当简单的问题（也是与简历相关的）：1）Subversion的简称是什么？2）GDC是做外包的，为什么选择这个公司？我们用java来开发，你觉得能够接受吗？对于这两个问题回答相当容易，SVN就是Subversion，外包嘛，侃侃《世界是平的》，至于用什么语言，就更容易回答了，如果你确实想去那个公司，你就回答“语言其实只是一种表达形式而已”，然后阐述一下，态度要诚恳。面试结束的时候，那个年龄稍大的面试官，对我微笑着点头，然后看见我的就业推荐表，就让我去复印一份给他们。这个时候，自己感觉offer有一大半都在手中了，果然一个星期之后，收到IBM GDC的offer。<br />搞定IBM GDC后，就有很多企业陆陆续续地开始做校园宣讲了。今年腾讯提前了半个月来学校抢人，我apply的是3D游戏引擎开发，先是笔试，笔试题很简单，都是一些计算机基础和程序设计语言基础。接下来就是为期一周的“非人”虐待，数数一共经历了四轮面试（包括最后的hr面试，听说也是要刷人的），每次面试都是凌晨短信通知，而且没有时间，没有地点，只能马上开电脑看看招聘网站上的具体时间和地点（对于没有上网的同学，就更加痛苦了），所以建议下次在短信中加上具体时间和面试地点。一面是技术面试，本来是5:00pm就开始面的，但是进去之后，面试官说他不是互娱的，就带我出来问互娱那边的面试官有没有空，最后，我等到接近6:00pm才开始。面试官非常nice，说话和长相都很像雪村，我主动给他介绍了一下自己的情况，然后他看着简历，问了关于项目的问题，也问了一些项目管理方面的问题，他对我们近期做的一个在线社区游戏非常感兴趣，于是问了一些问题，我一一做了回答（没有聊及涉密问题哈），最后问了一些软件开发的基本问题，很easy，只是最后一道算法题没有很顺利地答出来，感到很不爽。二面也是技术面试，面试官是互娱的技术总监floppy，他人很随和，只是比起“雪村”来多了几分严肃，刚开始也是问了简历上的问题，然后问了一些我研究方向方面的问题，好在平时看了比较多的paper，对这些问题也是比较流利地就pass了，感觉二面的难度就要比一面高了许多，所以，二面也是决定成败非常关键的一关。floppy的眼界很开阔，不愧是技术总监，从他那里也学到了不少东西。三面是集体面试，就是8个人临时组成一个team，完成一项任务。我们组的任务是用扑克分别搭建两个xcm（x=?搞忘了）高的塔，要求能够在上面承重一听可乐1分钟，然后把两个塔合并成一个2xcm高的塔，最后也是要求能够承重一听可乐1分钟。刚开始的时候，大家都在探索一种有效的方法，后来有个人提出了一种方案，大家觉得可行，就开始分工，最后，在规定时间内只完成了第一项任务，不过感觉我们团队的协作精神还是发挥得不错的。四面是hr面试，就是简单地问问你的一些情况，然后你问问公司的情况，hr应该会从这些谈话中看出你适不适合公司的文化。很快地，收到了腾讯的offer，大概又过了2个多星期，收到了special offer。<br />在腾讯之后过了大概快两个星期，S3（VIA上海公司，即旭上科技），来学校笔试，我申请的是Architecture Design Engineer，题也比较一般，题量也不大，除了一道比较刁钻的Shader编程问题和一道数学问题没有做之外，其他感觉还不错。收到S3的面试通知，应该是快一个星期之后了，我个人非常欣赏VIA的招聘风格，没有煎熬，没有等待，一二三面一气呵成。一面的面试官一个非常nice的台湾人，好像是Architecture部门的负责人，一开始他夸我笔试做得不错，77分应该算是比较高的了（汗！）。随后，我自我介绍了一下，然后就开始聊天，刚开始，我说了一大堆关于在学校做项目的东东，他听得非常认真，然后跟他聊了一下游戏，接着，我问了一下关于VIA的市场定位方面的问题，最后，他滔滔不绝地给我介绍了一下S3，一个技术问题都没问（相当纳闷）。等了一会儿，二面开始，面试官是一个美籍华人，也是非常随和的，这回他问了相当多的技术问题，什么渲染管线、C++的特性、脚本语言、正则表达式等等，最后还问了一个递归算法题，我当时已经晕了，不过还是基本上回答出来了。三面是hr面试，hr姐姐很有气质，面试时始终保持着微笑，她问了一下个人问题，对公司的了解程度，对工作地点有什么特殊要求，对上海的看法等等。面试后的第二天，我收到了S3的签约电话，S3这次在科大一共发了7个offer，其中4个Architecture，3个ASIC。<br />Ubisoft一直是我向往的公司，但今年也没有过来招聘。听说成都分公司新开张，开始招聘，我也投了一下。招聘过程很特别，不过我非常喜欢。第一关是书面测试，内容分为Graphics、Special Effect、Network、AI，测试在半个月之内完成，我选择最拿手的Graphics题目，这是一道根据需求完成一个简单的三维游戏的题目。我花了一个星期完成基本功能，并添加 了额外的粒子系统，以表现爆炸效果。感觉不错，顺利进入现场测试。现场测试的题目是在书面测试的基础上改进或者添加新功能，我花了3个多小时完成了测试，其间成都公司的老总Richard和另外两个上海公司的技术人员对我进行了面试。过了几天，得到了通过测试的消息，也没有太兴奋（因为这时候我已经和一个公司签约了，现在只想看看待遇和发展空间如何）。在签约的时候，我和Richard聊了我的情况，他非常耐心地给我解答了所有的疑问，整个谈话持续了很久。最终，由于我对成都这边的待遇不是很满意，Richard将我推荐到了上海那边。在我通过了上海那边的电话面试后，Richard和我又进行了一次谈话。我真的非常感谢Richard，感谢他给予我帮助，真心地祝福成都育碧能够有美好的明天。<br />最后，引用《程序员》08年4期“合适的才是最好的”一文的结束语与大家共勉：千里马只有遇到伯乐，才能称之为千里马；而伯乐，只有发现了千里马，才算得上是伯乐。如果你坚信自己是匹千里马，请一定要擦亮眼睛，找到那个能够赏识你的伯乐。在个人职业生涯中，总会遇到很多的机会，也面临着一次次的选择。我们都要清楚，求职求的不是完美，而是匹配，因为合适的才是最好的。                    <div>
                        作者：Lodger007 发表于 2007/10/25 11:22:00 <a href="https://blog.csdn.net/Lodger007/article/details/1842944">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1842944                    </div>
                    <div>
                        阅读：2978 评论：2 <a href="https://blog.csdn.net/Lodger007/article/details/1842944#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]在BEA培训]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1711925</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1711925</guid>
                <author>Lodger007</author>
                <pubDate>2007/07/27 18:42:00</pubDate>
                <description>
                    <![CDATA[
                    <font size="2">    没想到小洋经过一下午努力完成的创意和初赛文档，将我们送进了“2007 BEA TMT创新大赛”的复赛。起初我们根本就不care这个比赛，当得知进入复赛时，我们第一个反应就是“不去参加复赛”，最主要的原因可能在我，因为我正担任一个商业游戏项目的Leader，一天工作12个小时，根本就无暇顾及。<br />    后来，从大赛网站上得知BEA会在各地为进入复赛的team进行为期两天半的培训，我们商量了半天最终决定去看看，一方面想了解一下BEA，另一方面也想拓展一下自己的领域知识。决定之后，我将项目任务分配了一下，请了三天假。<br />    为了准时到达培训地点，我每天7点就起床，走到学校和小洋一起坐车去BEA成都分公司。整个培训的信息量比较大，培训时间从早上9点到中午12点，然后下午1点到5点，期间只有少量的休息时间，所以比较累（不过相对于每天12小时做项目，就相当轻松了），但却非常充实。培训的第一天，主要讲授电信领域的一些基础知识、SIP协议、WebLogic SIP Server的使用、SIP Servlet，然后</font><font size="2">主要基于一些实例代码进行讲解，让我们了解到了基于JSR116规范编写SIP Servlet的方法</font><font size="2">；第二天，讲授了基于更上层API的SIP Servlet的编写，在UA（User Agent）与ServiceApp之间使用SipLogic，而在ServiceApp与MS（Media Server）之间使用JMSC，凭着自己对Coding的兴趣，当天晚上我利用两者编写了一个在UA接通后播放一段视频的代码；第三天，老师就是叫我们做那个播放视频的练习，我和小洋就相当悠闲了。在这期间，我们上课做的最多的练习就是如何画Call Flow，这点对于设计业务处理流程相当重要。<br />    在这三天的培训中，给我印象最深的就是：负责给我们作培训的BEA员工，她们非常认真，非常负责。从这些员工的身上足可以映射出BEA的企业文化。<br /><br /></font>
<div style="text-align:center;"><font size="2"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/Groov0V/64741/r_CIMG0241.JPG" /><br /></font>
<div style="text-align:left;"><br /><div style="text-align:center;"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/Groov0V/64741/r_CIMG0247.jpg" /><br /><div style="text-align:left;"><br />P,S. CSDN Blog上传图片的服务简直惨不忍睹呀！</div>
</div>
</div>
</div>                    <div>
                        作者：Lodger007 发表于 2007/07/27 18:42:00 <a href="https://blog.csdn.net/Lodger007/article/details/1711925">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1711925                    </div>
                    <div>
                        阅读：1639                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]在DirectX 3D中使用CEGUI]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1675141</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1675141</guid>
                <author>Lodger007</author>
                <pubDate>2007/07/02 11:12:00</pubDate>
                <description>
                    <![CDATA[
                    <font size="3" style="font-weight:bold;">一、CEGUI简介</font><br /><font size="2">    CEGUI，为Crazy Eddie's GUI的缩写，它是一个用C++开发的面向对象的免费界面库，针对游戏开发者，提供了3D环境中的窗口及其部件的图形API。CEGUI在0.4.1之前（包括0.4.1），使用<a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a>授权协议，从0.5版本开始则采用了更为宽松的<a href="http://ttp//www.opensource.org/licenses/mit-license.php">MIT</a>协议。目前使用CEGUI的项目（摘自<a href="http://www.cegui.org.uk">http://www.cegui.org.uk</a>）：<br /><br /></font>
<div style="text-align:center;"><font size="2"><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Xenocide.jpg" alt="" /><br />Project Xenocide<br /><br /><img border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/BlitzMax.jpg" alt="" /><br />BlitzMax<br /><br /><img border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/plant.jpg" alt="" /><br />Plant covered GUI<br /></font>
<div style="text-align:left;"><font size="2">你可以从下面链接得到更多关于CEGUI的知识：<br />(1)    <a href="http://www.cegui.org.uk/wiki/index.php/Main_Page">http://www.cegui.org.uk/wiki/index.php/Main_Page</a><br />(2)    <a href="http://sourceforge.net/projects/crayzedsgui/">http://sourceforge.net/projects/crayzedsgui/</a><br />(3)    <a href="http://www.cegui.org.uk/wiki/index.php/FAQ">http://www.cegui.org.uk/wiki/index.php/FAQ</a></font><br /><br /><font size="3" style="font-weight:bold;">二、CEGUI结构概览<br /></font><font size="3"><font size="2">    从上一小节中给出的链接，你可以下载CEGUI的SDK。该SDK以DLL的形式提供，下面简单介绍一下这些DLL的作用及分类：<br /></font></font>
<div style="text-align:center;"><font size="3"><font size="2"><img width="869" height="716" border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/CEGUI%E5%88%86%E6%9E%90.gif" alt="" /></font></font><br /></div>
<div style="text-align:left;"><font size="3" style="font-weight:bold;">三、在DirectX中使用CEGUI<br /></font><font size="2">    CEGUI是一个跨平台的图形界面库，其平台无关性是通过对平台的封装实现的。在上一节中我们分析了CEGUI的SDK结构，在其渲染子系统中提供了Windows平台上的DirectX8.1/9.0的支持，因此不难推断在自己写的程序中应该可以使用CEGUI。<br /><font style="font-weight:bold;">3.1 CEGUI的资源组织<br /></font>    CEGUI的资源目录为datafiles，其组织情况如下：<br /></font>
<ul><li><font size="2">configs：资源配置文件</font></li>
</ul><ul><li><font size="2">fonts：字体资源</font></li>
</ul><ul><li><font size="2">imagesets：各种图片资源（如：皮肤图片等）</font></li>
</ul><ul><li><font size="2">layouts：布局文件（可以利用CEGUILayout得到）</font></li>
</ul><ul><li><font size="2">lookfeel：皮肤配置文件</font></li>
</ul><ul><li><font size="2">lua_scripts：Lua脚本文件</font></li>
</ul><ul><li><font size="2">schemes：xml配置文件的scheme</font></li>
</ul><font size="3"><font size="2"><font size="2">    我们主要关注的是layouts中的文件，这些xml文件可以由CEGUI的附带界面设计工具CEGUILayout得到。如下图所示：</font><font size="2" style="font-weight:bold;"><br /><br /></font></font></font>
<div style="text-align:center;"><font size="3"><font size="2"><font size="2" style="font-weight:bold;"><img border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/Layout.gif" alt="" /></font></font></font><br /></div>
<font size="3"><font size="2"><font size="2" style="font-weight:bold;">3.2 程序中使用CEGUI<br /></font><font size="2">    在这一小节中，我将使用MFC+DirectX9.0c+CEGUI创建一个DEMO，下面仅列出一些关键代码，在文章最后给出了DEMO的源代码下载链接。如果你对在MFC或者Win32 SDK中使用DirectX 3D还不熟悉，可以参考</font></font></font><font size="2"><a href="http://blog.csdn.net/Lodger007/archive/2006/09/16/1232063.aspx">Direct3D入门之框架的搭建</a>一文。<br />(1)    创建DirectX 3D设备m_d3dDevice；<br />(2)    创建CEGUI::Render对象：<br />    m_pCEGUIRender = new CEGUI::DirectX9Renderer(m_d3dDevice , 0);    <br />(3)    创建CEGUI::System对象：<br />    new CEGUI::System(m_pCEGUIRender);<br />(4)    渲染CEGUI：<br />    if(m_d3dDevice) // Only use Device methods if we have a valid device.<br />    {<br />        //<br />        // Draw the Scene:<br />        //<br />        m_d3dDevice-&gt;BeginScene();<br />        m_d3dDevice-&gt;Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(50 , 0 , 50) , 1.0f, 0);<br />            /// Render Meshs<br />            DrawMesh();<br />            /// Render CEGUI<br />            CEGUI::System::getSingleton().renderGUI();<br /><br />        m_d3dDevice-&gt;EndScene();<br />        m_d3dDevice-&gt;Present(0, 0, 0, 0);<br />    }<br />(</font><font size="2">5)    需要引入的头文件<br />#include &lt;CEGUI.h&gt;<br />#include &lt;CEGUIDefaultResourceProvider.h&gt;<br />(6)    需要的引入库<br />CEGUIBase_d.lib(Debug版本)<br />DirectX9GUIRenderer_d.lib(Debug版本)<br />(7)    在程序中设置默认的资源及其路径<br />    必须设置资源（也就是datafiles）的路径，不然系统运行时就会出现找不到资源的异常。代码如下所示：<br />    /// 初始化CEGUI的资源缺省路径<br />    CEGUI::DefaultResourceProvider* rp = static_cast&lt;CEGUI::DefaultResourceProvider*&gt;<br />        (CEGUI::System::getSingleton().getResourceProvider());<br />    rp-&gt;setResourceGroupDirectory("schemes", "../datafiles/schemes/");<br />    rp-&gt;setResourceGroupDirectory("imagesets", "../datafiles/imagesets/");<br />    rp-&gt;setResourceGroupDirectory("fonts", "../datafiles/fonts/");<br />    rp-&gt;setResourceGroupDirectory("layouts", "../datafiles/layouts/");<br />    rp-&gt;setResourceGroupDirectory("looknfeels", "../datafiles/looknfeel/");<br />    rp-&gt;setResourceGroupDirectory("lua_scripts", "../datafiles/lua_scripts/");///&lt; 如果没用Lua脚本就将该行注释掉<br />    /// 设置使用的缺省资源<br />    CEGUI::Imageset::setDefaultResourceGroup("imagesets");<br />    CEGUI::Font::setDefaultResourceGroup("fonts");<br />    CEGUI::Scheme::setDefaultResourceGroup("schemes");<br />    CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");<br />    CEGUI::WindowManager::setDefaultResourceGroup("layouts");<br />    CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");///&lt; 如果没用Lua脚本就将该行注释掉<br />    注意：这样设置的一个前提是datafiles存在于项目根目录下。<br />(8)    恢复CEGUI改变的渲染状态<br />    通过分析CEGUI的源代码得知，CEGUI在渲染时会改变某些渲染状态，特别是与深度有关的状态，所以必须在渲染三维物体之前打开这些状态：<br />    m_d3dDevice-&gt;SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);<br />    m_d3dDevice-&gt;SetRenderState(D3DRS_ZWRITEENABLE, TRUE);<br /><br /></font>
<div style="text-align:center;"><font size="2"><font size="3" style="font-weight:bold;"><a href="http://www.cnblogs.com/Files/Groov0V/CEGUITestCodes.rar">点击下载源代码</a></font></font><br /></div>
<font size="2"><span style="font-weight:bold;">注意：</span><br style="font-weight:bold;" /><span style="font-weight:bold;">1、本项目是用vs2003开发，使用DirectX9.0c August版本，CEGUI SDK 0.5.0b-vc71。</span><br style="font-weight:bold;" /><span style="font-weight:bold;">2、将layout下的GameGUI.layout文件copy至CEGUI SDK的datafiles/layouts下</span><br style="font-weight:bold;" /><span style="font-weight:bold;">3、本项目只需要CEGUIBase_d.dll、CEGUIExpatParser_d.dll、CEGUIFalagardWRBase_d.dll、DirectX9GUIRender_d.dll（Debug版本）</span><br style="font-weight:bold;" /></font></div>
</div>
</div>                    <div>
                        作者：Lodger007 发表于 2007/07/02 11:12:00 <a href="https://blog.csdn.net/Lodger007/article/details/1675141">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1675141                    </div>
                    <div>
                        阅读：10085 评论：3 <a href="https://blog.csdn.net/Lodger007/article/details/1675141#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]Intel多核程序设计大赛初赛题-95%正确率答案]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1649689</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1649689</guid>
                <author>Lodger007</author>
                <pubDate>2007/06/12 21:59:00</pubDate>
                <description>
                    <![CDATA[
                    <img border="0" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/IntelMultiCore.gif" /><br />对于17题，我估计没有标准答案，因为该编译选项是针对OpenMP的，而OpenMP是一个Portable 的库。                    <div>
                        作者：Lodger007 发表于 2007/06/12 21:59:00 <a href="https://blog.csdn.net/Lodger007/article/details/1649689">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1649689                    </div>
                    <div>
                        阅读：3048 评论：2 <a href="https://blog.csdn.net/Lodger007/article/details/1649689#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]C++实现插件构架 之 入门篇]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1605230</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1605230</guid>
                <author>Lodger007</author>
                <pubDate>2007/05/11 22:25:00</pubDate>
                <description>
                    <![CDATA[
                    <div style="text-align:center;"><font size="4"><span style="font-family:'Comic Sans MS';font-weight:bold;">Plug-in is Everywhere</span></font><font size="3"><span style="font-family:'Comic Sans MS';"><br />                                                        ——Plug-in是一种理念</span></font><br /><div style="text-align:right;"><font size="4"><span style="font-family:'Comic Sans MS';font-weight:bold;"></span></font></div>
</div>
<br /><font size="3">在一个典型的应用开发过程中，我们必须在设计开发阶段满足所有既定的需求。然而软件开发并非一劳永逸之事，客户对功能的需求永无休止，他们会提出各种各样稀奇古怪的需求，这就迫使软件设计者在体系架构上下功夫。目前，Plug-in（插件）体系架构被认为是避免重复劳动、缩短发布周期、提高可扩展性、吸引用户的良方。使用Plug-in技术允许第三方开发者扩充其功能的例子比比皆是，就连鼎鼎大名的Microsoft也在Office、Visual Studio等产品中加入了add-in功能。成功的开源项目无一例外地采用了Plug-in架构，如Eclipse、Firefox。<br /><br />什么是Plug-in架构呢？简单地讲，它是一个框架（Framework），允许一个程序在启动时搜索扩展的功能，然后允许Plug-in与自己协作。<br /><br />怎样才能让Plug-in为我所用？一个非常简单的方法就是利用DLLs。当程序启动时，搜索指定路径下的任何DLLs，然后查询这些DLLs是否满足给定的接口，如果满足就说明DLL是这个程序的插件。<br /><br />关键：明确定义接口！<br /><br />请记住：PCI-Express决不可能直接插AGP显卡！<br /><br />下面是一个简单的Plug-in应用的初始化流程：<br /><br />1、程序启动；<br /><br />2、Init函数在指定的目录下搜索所有的DLLs；<br /><br />3、程序试着在每一个找到的DLL中获取Load函数，如果失败，说明这个DLL不是符合规范的插件；<br /><br />4、如果Load函数调用成功，程序会缓存每个有效DLL对应的模块句柄，为后面使用插件功能做准备；<br /><br />5、在程序运行期间，用户选择一个菜单项，于是对应的功能被调用；<br /><br />6、在程序结束时，Unload函数被调用以便释放Load函数载入的资源。<br /> <br />下图为整个Framework的时序图：<br /><br /></font>
<div style="text-align:center;"><font size="3"><span style="font-family:'Comic Sans MS';"><img border="0" align="middle" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Lodger007/plug-in.gif" alt="" /><br /><br /></span></font></div>
<font size="3">[<a href="http://www.cnblogs.com/Files/Groov0V/PluginDemo.rar">下载示例代码</a>]</font>                    <div>
                        作者：Lodger007 发表于 2007/05/11 22:25:00 <a href="https://blog.csdn.net/Lodger007/article/details/1605230">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1605230                    </div>
                    <div>
                        阅读：2761                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]对齐，请小心！]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1586889</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1586889</guid>
                <author>Lodger007</author>
                <pubDate>2007/04/27 10:52:00</pubDate>
                <description>
                    <![CDATA[
                    <font size="3">    对于习惯了上层开发的人们，在开发具有严格格式约束（如，网络底层应用）系统时，往往会忽略一个重要的问题——对齐，从而导致程序正确，但结果不正确的Bug。<br />    大多数情况下，我们总是非常信任编译器，相信她会给予我们所想象的二进制代码，诚然，在大部分情况下，她还是很听话的，但是偶尔也有不如尔意的时候。如果你是初次遇到这种问题，很可能会废掉你大半天的时间来怀疑是代码的问题。<br />    最近，在开发一个网络程序时就遭遇了这样一个问题。下面为其中一个功能对应的ARP数据包结构：<br /></font>
<div class="code"> <font size="3"><font color="#4c89b8">000001</font>    <font color="#2026a2">typedef</font> <font color="#2026a2">struct</font> _DLCHeader<br /><font color="#4c89b8">000002</font>    {<br /><font color="#4c89b8">000003</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_receiverMAC[6];<br /><font color="#4c89b8">000004</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_senderMAC[6];<br /><font color="#4c89b8">000005</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">short</font> m_ethertype;<br /><font color="#4c89b8">000006</font>    }DLCHeader;<br /><font color="#4c89b8">000007</font>    <font color="#2026a2">typedef</font> <font color="#2026a2">struct</font> _ARPFrame<br /><font color="#4c89b8">000008</font>    {<br /><font color="#4c89b8">000009</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">short</font> m_hardwareType;<br /><font color="#4c89b8">000010</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">short</font> m_protocolType;<br /><font color="#4c89b8">000011</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_lengthMAC;<br /><font color="#4c89b8">000012</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_lengthIP;<br /><font color="#4c89b8">000013</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">short</font> m_opCode;<br /><font color="#4c89b8">000014</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_senderMAC[6];<br /><font color="#4c89b8">000015</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">long</font> m_senderIP;<br /><font color="#4c89b8">000016</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">char</font> m_receiverMAC[6];<br /><font color="#4c89b8">000017</font>        <font color="#2026a2">unsigned</font> <font color="#2026a2">long</font> m_receiverIP;<br /><font color="#4c89b8">000018</font>    }ARPFrame;<br /></font></div>
<font size="3">      如果严格地按照结构体所指定的字节数42，程序一点问题没有。但是，在默认情况下Visual Studio (.NET)是根据系统参数（总线宽度）来选择在编译过程中是否往数据结构中填充额外数据来满足要求，此过程称为对齐。虽然说这样优化性能，但是对于需要严格构造底层数据包，这种优化无疑给我们带来了麻烦。下面对比一下采用默认对齐和1Byte对齐的结果：<br /></font>
<div class="code"><font size="3"> 采用默认对齐，填充了10Byte<br />Packet length, captured portion: 62, 62<br /> 00000000 : 00 16 76 d2 53 e8 00 14 78 97 dc 86 08 00 45 00 ..v.S...x.....E.<br /> 00000010 : 00 30 00 00 40 00 36 06 9f fb 40 d7 a2 40 c0 a8 .0..@.6...@..@..<br /> 00000020 : 01 0d 00 50 06 3c a1 d6 bd b9 3b 8b 48 b5 70 12 ...P.&lt;....;.H.p.<br /> 00000030 : 16 d0 dd 1d 00 00 02 04 05 ac 01 01 04 02       ..............<br /><br /> 采用1Byte对齐，得到正确的数据包<br />Packet length, captured portion: 42, 42<br /> 00000000 : 00 16 76 d2 53 e8 01 02 03 04 05 06 08 06 00 01 ..v.S...........<br /> 00000010 : 08 00 06 04 00 01 01 02 03 04 05 06 c0 a8 01 01 ................<br /> 00000020 : 00 16 76 d2 53 e8 c0 a8 01 0d                   ..v.S.....<br /></font>  </div>
<font size="3">     Visual Studio提供了关于对齐的编译选项，在[代码产生(Code Generation)]的[结构成员对齐(Struct Member Alignment)]。<br /></font>                    <div>
                        作者：Lodger007 发表于 2007/04/27 10:52:00 <a href="https://blog.csdn.net/Lodger007/article/details/1586889">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1586889                    </div>
                    <div>
                        阅读：1615                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]诗一首]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1548280</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1548280</guid>
                <author>Lodger007</author>
                <pubDate>2007/04/01 13:12:00</pubDate>
                <description>
                    <![CDATA[
                    <center><font size="3">2007年3月31日 携佳人游百花潭公园 诗作</font></center>
<p><font size="3"><br /></font></p>
<center><font size="3">潭中百花争奇艳，</font></center><center><font size="3">曲径悠道佳人伴。</font></center><center><font size="3">忽如一阵风飞雪，</font></center><center><font size="3">却是绿柳散白絮。</font></center><!-- Saved in parser cache with key mediawiki:pcache:idhash:30-0!1!0!!en!2 and timestamp 20070331113940 -->
<div class="printfooter"><font size="3"></font></div>
<!-- end content --><font size="3"> </font>                    <div>
                        作者：Lodger007 发表于 2007/04/01 13:12:00 <a href="https://blog.csdn.net/Lodger007/article/details/1548280">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1548280                    </div>
                    <div>
                        阅读：1199                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]重构实践——利用配置文件实现设计的高度抽象]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1539844</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1539844</guid>
                <author>Lodger007</author>
                <pubDate>2007/03/24 15:02:00</pubDate>
                <description>
                    <![CDATA[
                    <div class="code">
<p><font size="3">    项目简介：基于各种开源库(OGRE、OpenSteer、Newton、Raknet、OpenAL)的游戏引擎项目，目前项目正在进行2.0版本的开发，主要工作是对前一版本从整体框架上进行大幅度改进，建立健壮的异常和运行时错误处理机制，以及完成各个子系统框架的重构，这篇文章就是根据笔者对AI子系统重构实践写成。</font></p>
</div>
<p><font style="background-color:#99ccff;" size="3"><strong>设计动机：</strong></font></p>
<p><font size="3">1、抽象程度低。引入任何一个新类型事物，都需要加入其对应的个体类或群体类及群体管理器。</font></p>
<p><font size="3">2、不同个体之间的耦合程度高。具体体现在有着某种关系的个体之间，如追踪与被追踪关系。其中，一类个体A的状态受到另一类个体B的直接干涉（B通过设置A的一类标志，来迫使A的状态转变），这显然与自然规则和OOD原则相违背。按照面向对象的设计思想，一个对象应该尽量做到内聚，也就是说对象应该有自主能力，它掌控着自身所有的状态和变化，必要时提供自身的一些信息（比如，位置信息）。</font></p>
<p><font size="3">3、灵活度低。如果需要添加/删除/更新功能，则需要对每个个体类型的代码进行相应修改。</font></p>
<p><font style="background-color:#99ccff;" size="3"><strong>设计思路：</strong></font></p>
<p> <font size="3">1、对于抽象程度低的设计缺陷，采用提炼所有存在类中并集，加之配置文件运行时动态具类化（即，根据配置文件和创建参数动态确定创建对象的类型，如Tiger、Deer等）。之所有考虑提炼并集而不是交集，目的是让其以配置文件形式而非代码（即，继承）来具类。<br /> 2、通过提炼AI对象之间的相互作用关系，得出一种以角色（Role）为基础的关系抽象。在此设计中，每个对象都一个或者多个角色，同时又有其感兴趣的一个或者多个角色。角色管理器担当着管理角色－对象列表（如图1）。对象在创建时根据其角色将自身注册到全局的角色管理器中。一个对象能够在需要时在角色管理器中搜索其感兴趣的角色对象，获取其参数后，根据计算值更新自己的状态。如时序图2所示。</font></p>
<font size="3">
</font><p align="center"><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/lodger007/66815/o_RolesMap.gif"><img alt="" border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/lodger007/66815/o_RolesMap.gif" /></a></p>
<p align="center">图1</p>
<p align="center"><img alt="" border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/lodger007/66815/o_AIStateUpdate.gif" /><br />图2 示例时序图(省略了Deer的状态更新过程)</p>
<p align="left"><font style="background-color:#99ccff;"><strong>实现：</strong></font></p>

<p><font size="3">1、AI个体抽象类CIndividual，维护着个体的智能，是OpenSteer::SimpleVehicle和Ogre::UserDefinedObject的子类。 <br />2、AI个体抽象包装类CIndividualWrapper，负责对象的视觉表现，对CIndividual起着包装作用，是CIndividual的友元。<br />3、角色管理器模板类CRolesManager，实现如下：</font></p>
<div class="code"><font color="#4c89b8">000001</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">class</font></font></font></font> CIndividual;<br /><font color="#4c89b8">000002</font>    <br /><font color="#4c89b8">000003</font>    <font color="#1e811e">/** 全局角色管理器<br /><font color="#4c89b8">000004</font>    @author Groov0V(groov0v.luo@gmail.com)<br /><font color="#4c89b8">000005</font>    <br /><font color="#4c89b8">000006</font>    负责管理角色对应的对象列表<br /><font color="#4c89b8">000007</font>    */</font><br /><font color="#4c89b8">000008</font>    <br /><font color="#4c89b8">000009</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">template</font></font></font></font>&lt;typename T&gt;<br /><font color="#4c89b8">000010</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">class</font></font></font></font> CRolesManager<br /><font color="#4c89b8">000011</font>    {<br /><font color="#4c89b8">000012</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">public</font></font></font></font>:<br /><font color="#4c89b8">000013</font>        ~CRolesManager()<br /><font color="#4c89b8">000014</font>        {<br /><font color="#4c89b8">000015</font>            RoleRegistryMapIter iter;<br /><font color="#4c89b8">000016</font>            TRAV(m_roleRegistryMap , iter)<br /><font color="#4c89b8">000017</font>            {<br /><font color="#4c89b8">000018</font>                SAFE_DELETE( iter-&gt;second );<br /><font color="#4c89b8">000019</font>            }<br /><font color="#4c89b8">000020</font>        }<br /><font color="#4c89b8">000021</font>    <br /><font color="#4c89b8">000022</font>        <font color="#1e811e">/** 将对象指针添加到角色ID对应的列表中<br /><font color="#4c89b8">000023</font>        */</font><br /><font color="#4c89b8">000024</font>        <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">void</font></font></font></font> Add(<font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">unsigned</font></font></font></font> <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">int</font></font></font></font> roleID , T* pObj)<br /><font color="#4c89b8">000025</font>        {<br /><font color="#4c89b8">000026</font>            RoleRegistryMapIter iter = m_roleRegistryMap.find(roleID);<br /><font color="#4c89b8">000027</font>            <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">if</font></font></font></font>(iter != m_roleRegistryMap.end())<br /><font color="#4c89b8">000028</font>                iter-&gt;second-&gt;push_back(pObj);<br /><font color="#4c89b8">000029</font>            <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">else</font></font></font></font><br /><font color="#4c89b8">000030</font>            {<br /><font color="#4c89b8">000031</font>                std::list&lt;T*&gt;* listPtr = new std::list&lt;T*&gt;;<br /><font color="#4c89b8">000032</font>                listPtr-&gt;push_back(pObj);<br /><font color="#4c89b8">000033</font>                m_roleRegistryMap.insert(make_pair(roleID , listPtr));<br /><font color="#4c89b8">000034</font>            }<br /><font color="#4c89b8">000035</font>        }<br /><font color="#4c89b8">000036</font>    <br /><font color="#4c89b8">000037</font>        <font color="#1e811e">/** 从角色列表中移除对象<br /><font color="#4c89b8">000038</font>        */</font><br /><font color="#4c89b8">000039</font>        <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">void</font></font></font></font> Remove(<font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">unsigned</font></font></font></font> <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">int</font></font></font></font> roleID , T* pObj)<br /><font color="#4c89b8">000040</font>        {<br /><font color="#4c89b8">000041</font>            RoleRegistryMapIter iter = m_roleRegistryMap.find(roleID);<br /><font color="#4c89b8">000042</font>            <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">if</font></font></font></font>(iter != m_roleRegistryMap.end())<br /><font color="#4c89b8">000043</font>                iter-&gt;second-&gt;erase(pObj);<br /><font color="#4c89b8">000044</font>        }<br /><font color="#4c89b8">000045</font>    <br /><font color="#4c89b8">000046</font>        <font color="#1e811e">/** 返回指定角色的对象列表<br /><font color="#4c89b8">000047</font>        */</font><br /><font color="#4c89b8">000048</font>        std::list&lt;T*&gt;* GetObjList(<font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">unsigned</font></font></font></font> <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">int</font></font></font></font> roleID)<br /><font color="#4c89b8">000049</font>        {<br /><font color="#4c89b8">000050</font>            RoleRegistryMapIter iter = m_roleRegistryMap.find(roleID);<br /><font color="#4c89b8">000051</font>            <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">if</font></font></font></font>(iter != m_roleRegistryMap.end())<br /><font color="#4c89b8">000052</font>                <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">return</font></font></font></font> iter-&gt;second;<br /><font color="#4c89b8">000053</font>            <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">else</font></font></font></font><br /><font color="#4c89b8">000054</font>                <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">return</font></font></font></font> NULL;<br /><font color="#4c89b8">000055</font>        }<br /><font color="#4c89b8">000056</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">private</font></font></font></font>:<br /><font color="#4c89b8">000057</font>        <font color="#1e811e">/** 角色-对象注册表<br /><font color="#4c89b8">000058</font>        */</font><br /><font color="#4c89b8">000059</font>        stdext::hash_map&lt;<font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">unsigned</font></font></font></font> <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">int</font></font></font></font> , std::list&lt;T*&gt;*&gt; m_roleRegistryMap;<br /><font color="#4c89b8">000060</font>        <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">typedef</font></font></font></font> typename stdext::hash_map&lt;<font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">unsigned</font></font></font></font> <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">int</font></font></font></font> , std::list&lt;T*&gt;*&gt;::iterator RoleRegistryMapIter;<br /><font color="#4c89b8">000061</font>    };<br /><font color="#4c89b8">000062</font>    <br /><font color="#4c89b8">000063</font>    <font color="#2026a2"><font color="#2026a2"><font color="#2026a2"><font color="#2026a2">#define</font></font></font></font> g_rolesManager DMF::globe_instance&lt; CRolesManager&lt;CIndividual&gt; &gt;::Instance()<br /><font color="#4c89b8">000064</font>    <br /></div>
<p><font size="3">4、配置脚本(利用TinyXML实现读/存)：</font></p>
<div class="code"><font color="#4c89b8">000001</font>    &lt;AIObjects&gt;<br /><font color="#4c89b8">000002</font>        &lt;Object name="Tiger"&gt;<br /><font color="#4c89b8">000003</font>         &lt;Roles&gt;<br /><font color="#4c89b8">000004</font>         &lt;Role name="Tracer" id="0" /&gt;<br /><font color="#4c89b8">000005</font>         &lt;/Roles&gt;<br /><font color="#4c89b8">000006</font>         &lt;DisRoles&gt;<br /><font color="#4c89b8">000007</font>         &lt;DisRole name="BeTracer" id="1" /&gt;<br /><font color="#4c89b8">000008</font>         &lt;/DisRoles&gt;<br /><font color="#4c89b8">000009</font>         &lt;NumericParams&gt;<br /><font color="#4c89b8">000010</font>             &lt;Param name="SIGHT_DISTANCE" value="1200" /&gt;<br /><font color="#4c89b8">000011</font>             &lt;Param name="PURSUIT_DISTANCE" value="800" /&gt;<br /><font color="#4c89b8">000012</font>             &lt;Param name="ATTACK_DISTANCE" value="200" /&gt;<br /><font color="#4c89b8">000013</font>             &lt;Param name="WALK_STRAIGHT_TIME" value="2.5" /&gt;<br /><font color="#4c89b8">000014</font>             &lt;Param name="WALK_TIME" value="10.0" /&gt;<br /><font color="#4c89b8">000015</font>             &lt;Param name="IDLE_TIME" value="2.5" /&gt;<br /><font color="#4c89b8">000016</font>             &lt;Param name="PURSUIT_TIME" value="15" /&gt;<br /><font color="#4c89b8">000017</font>             &lt;Param name="WALK_SPEED" value="20" /&gt;<br /><font color="#4c89b8">000018</font>             &lt;Param name="PURSUIT_SPEED" value="100" /&gt;<br /><font color="#4c89b8">000019</font>             &lt;Param name="ATTACK_SPEED" value="120" /&gt;<br /><font color="#4c89b8">000020</font>             &lt;Param name="MOVE_SPEED" value="50" /&gt;<br /><font color="#4c89b8">000021</font>             &lt;Param name="LENGTH" value="35" /&gt;<br /><font color="#4c89b8">000022</font>             &lt;Param name="ENERGY" value="100" /&gt;<br /><font color="#4c89b8">000023</font>             &lt;Param name="STEER_FORCE" value="200" /&gt;<br /><font color="#4c89b8">000024</font>             &lt;Param name="STEER_MAX_SPEED" value="150" /&gt;<br /><font color="#4c89b8">000025</font>             &lt;Param name="STEER_RADUIS" value="25" /&gt;<br /><font color="#4c89b8">000026</font>             &lt;Param name="WANDER_JITTER" value="100" /&gt;<br /><font color="#4c89b8">000027</font>             &lt;Param name="WANDER_RADUIS" value="50" /&gt;<br /><font color="#4c89b8">000028</font>             &lt;Param name="ENERGY_DES" value="20" /&gt;<br /><font color="#4c89b8">000029</font>            &lt;/NumericParams&gt;<br /><font color="#4c89b8">000030</font>            &lt;StringParams&gt;<br /><font color="#4c89b8">000031</font>             &lt;Param name="PLACEHOLDERMATNAME" value="GOOFPlaceHolderTiger" /&gt;<br /><font color="#4c89b8">000032</font>             &lt;Param name="PLACEHOLDERMESHNAME" value="soundnode.mesh" /&gt;<br /><font color="#4c89b8">000033</font>             &lt;Param name="Type" value="GameTigerObject" /&gt;<br /><font color="#4c89b8">000034</font>             &lt;Param name="MeshFile" value="dire_cat.mesh" /&gt;<br /><font color="#4c89b8">000035</font>            &lt;/StringParams&gt;<br /><font color="#4c89b8">000036</font>            &lt;AnimationStates&gt;<br /><font color="#4c89b8">000037</font>             &lt;State id="0" name="cpause1" /&gt;<br /><font color="#4c89b8">000038</font>             &lt;State id="3" name="crun" /&gt;<br /><font color="#4c89b8">000039</font>             &lt;State id="-1" name="cwalk" /&gt;<br /><font color="#4c89b8">000040</font>            &lt;/AnimationStates&gt;<br /><font color="#4c89b8">000041</font>        &lt;/Object&gt;<br /><font color="#4c89b8">000042</font>        &lt;Object name="Deer"&gt;<br /><font color="#4c89b8">000043</font>         &lt;Roles&gt;<br /><font color="#4c89b8">000044</font>         &lt;Role name="BeTracer" id="1" /&gt;<br /><font color="#4c89b8">000045</font>         &lt;/Roles&gt;<br /><font color="#4c89b8">000046</font>         &lt;DisRoles&gt;<br /><font color="#4c89b8">000047</font>         &lt;DisRole name="Tracer" id="0" /&gt;<br /><font color="#4c89b8">000048</font>         &lt;/DisRoles&gt;    <br /><font color="#4c89b8">000049</font>         &lt;NumericParams&gt;<br /><font color="#4c89b8">000050</font>             &lt;Param name="WALK_SPEED" value="20" /&gt;<br /><font color="#4c89b8">000051</font>             &lt;Param name="RUN_SPEED" value="120" /&gt;<br /><font color="#4c89b8">000052</font>             &lt;Param name="IDLE_TIME" value="8.0" /&gt;<br /><font color="#4c89b8">000053</font>             &lt;Param name="WALK_TIME" value="8.0" /&gt;<br /><font color="#4c89b8">000054</font>             &lt;Param name="ENERGY" value="100" /&gt;         <br /><font color="#4c89b8">000055</font>             &lt;Param name="LENGTH" value="35" /&gt;<br /><font color="#4c89b8">000056</font>             &lt;Param name="WALK_STRAIGHT_TIME" value="1.5" /&gt;<br /><font color="#4c89b8">000057</font>             &lt;Param name="RUN_DISTANCE" value="600" /&gt;<br /><font color="#4c89b8">000058</font>             &lt;Param name="SAFE_DISTANCE" value="820" /&gt;<br /><font color="#4c89b8">000059</font>             &lt;Param name="STEER_FORCE" value="200" /&gt;<br /><font color="#4c89b8">000060</font>             &lt;Param name="STEER_MAX_SPEED" value="150" /&gt;<br /><font color="#4c89b8">000061</font>             &lt;Param name="STEER_RADUIS" value="25" /&gt;<br /><font color="#4c89b8">000062</font>             &lt;Param name="WANDER_RADUIS" value="50" /&gt;<br /><font color="#4c89b8">000063</font>             &lt;Param name="WANDER_JITTER" value="40.0" /&gt;<br /><font color="#4c89b8">000064</font>             &lt;Param name="ENERGY_DES" value="20" /&gt;<br /><font color="#4c89b8">000065</font>            &lt;/NumericParams&gt;<br /><font color="#4c89b8">000066</font>            &lt;StringParams&gt;<br /><font color="#4c89b8">000067</font>             &lt;Param name="PLACEHOLDERMATNAME" value="GOOFPlaceHolderDeer" /&gt;<br /><font color="#4c89b8">000068</font>             &lt;Param name="PLACEHOLDERMESHNAME" value="soundnode.mesh" /&gt;<br /><font color="#4c89b8">000069</font>             &lt;Param name="Type" value="GameDeerObject" /&gt;<br /><font color="#4c89b8">000070</font>             &lt;Param name="MeshFile" value="deer.mesh" /&gt;<br /><font color="#4c89b8">000071</font>            &lt;/StringParams&gt;<br /><font color="#4c89b8">000072</font>            &lt;AnimationStates&gt;<br /><font color="#4c89b8">000073</font>             &lt;State id="0" name="creadyl" /&gt;<br /><font color="#4c89b8">000074</font>             &lt;State id="6" name="crun" /&gt;<br /><font color="#4c89b8">000075</font>             &lt;State id="-1" name="cwalk" /&gt;<br /><font color="#4c89b8">000076</font>            &lt;/AnimationStates&gt;        <br /><font color="#4c89b8">000077</font>        &lt;/Object&gt;<br /><font color="#4c89b8">000078</font>        &lt;Object name="Bird"&gt;<br /><font color="#4c89b8">000079</font>            ... ...<br /><font color="#4c89b8">000080</font>        &lt;/Object&gt;<br /><font color="#4c89b8">000081</font>        &lt;Object name="Butterfly"&gt;<br /><font color="#4c89b8">000082</font>            ... ...<br /><font color="#4c89b8">000083</font>        &lt;/Object&gt;<br /><font color="#4c89b8">000084</font>    &lt;/AIObjects&gt;<br /></div>                    <div>
                        作者：Lodger007 发表于 2007/03/24 15:02:00 <a href="https://blog.csdn.net/Lodger007/article/details/1539844">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1539844                    </div>
                    <div>
                        阅读：1915                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]Bugzilla配置中可能遭遇的头痛问题]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1532228</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1532228</guid>
                <author>Lodger007</author>
                <pubDate>2007/03/17 17:46:00</pubDate>
                <description>
                    <![CDATA[
                    <p align="center"><font size="3"><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/lodger007/66815/o_Bugzilla.gif"></a><img alt="" border="0" src="http://p.blog.csdn.net/images/p_blog_csdn_net/lodger007/66815/o_Bugzilla.gif" /> </font></p>
<p><font size="3">    </font><a href="http://www.bugzilla.org/"><font size="3">Bugzilla</font></a><font size="3">是一个基于Web的开源缺陷管理，主要采用Perl完成。在使用过程中感觉，虽然其界面没有Joel的</font><a href="http://www.joelonsoftware.com/"><font size="3">FogBugz</font></a><font size="3">那么专业，但是功能却一点也不含糊，什么邮件递送、Bug图表一应俱全。由于Bugzilla考虑到跨平台以及对Linux环境的倾向，在安装和配置方面肯定没有FogBugz基于asp来得轻松，但是你还是能够通过</font><a href="http://www.bugzilla.org/docs/win32install.html"><font size="3">Installing Bugzilla on Microsoft Windows</font></a><font size="3"><sup>[1]</sup>一文安装和配置你团队的缺陷管理系统，只是在此过程中你偶尔会遇到一些诡异问题，因而在此我将对付它们的解决方法写出来，希望对看到这篇文章的朋友有所帮助。（环境说明：Apache Web Server 2.2.3+ActiveState Perl 5.8.8+MySQL 5.0+WinXP SP2）</font></p>
<div class="code">
<p><font size="3">    ※ 成功运行checksetup.pl，但出现报告错误的页面，你会发现Apache Web Server的日志报告“cgi没有被执行”。错误原因是：没有配置Web Server对cgi的处理，你可以参照[1]文中"Configure CGI"部分来解决。</font></p>
<p><font size="3">    ※ 初次运行系统时不能登陆、不能注册。原因可能是：1）没有安装Mail模块；2）防火墙禁用了sendmail操作。解决问题1的方法是运行：ppm install MailTools；问题2的解决不说也知道，就是让你的防火墙allow sendmail。</font></p>
<p><font size="3">    ※ 在Bugzilla中对Mail的配置并没有提供对smtp授权信息的设置，但如果使用外部邮件服务器投递邮件时都会要求认证信息。解决方法有两种：1）修改源代码，加入这一设置；2）在本地安装一个邮件服务器，建议使用WinMail，而不推荐Easy Mail Server，原因是在测试过程中使用后者只有gmail能够正常投递，而前者都能正常投递。如果使用方案2，记得将smtp的邮件服务器地址设置为127.0.0.1。</font></p>
</div>                    <div>
                        作者：Lodger007 发表于 2007/03/17 17:46:00 <a href="https://blog.csdn.net/Lodger007/article/details/1532228">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1532228                    </div>
                    <div>
                        阅读：2478                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]四川2006年下半年软件考试成绩统计]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1488016</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1488016</guid>
                <author>Lodger007</author>
                <pubDate>2007/01/19 21:18:00</pubDate>
                <description>
                    <![CDATA[
                    <p>    用Excel对数据进行了统计（只针对系分与信息系统项目管理师）：</p>
<p>     87人报考系统分析师，通过12人，通过率为13.79%，上午最高分57，下午案例分析最高分64，下午论文49。</p>
<p>     44人报考信息系统分析师，通过6人，通过率为13.6%，上午最高分56，下午案例分析最高分63，下午论文53。</p>
<p>     <a href="http://www.cnblogs.com/Files/Groov0V/2006%E5%B9%B4%E4%B8%8B%E5%8D%8A%E5%B9%B4%E8%BD%AF%E4%BB%B6%E8%80%83%E8%AF%95%E6%88%90%E7%BB%A9%E7%BB%9F%E8%AE%A1%E8%A1%A8.rar">下载Excel文件</a></p>
<p>P.S. 复习一个月一次通过系分，感觉不错哈！</p>                    <div>
                        作者：Lodger007 发表于 2007/01/19 21:18:00 <a href="https://blog.csdn.net/Lodger007/article/details/1488016">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1488016                    </div>
                    <div>
                        阅读：1611                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]以诗助兴]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1485051</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1485051</guid>
                <author>Lodger007</author>
                <pubDate>2007/01/16 22:07:00</pubDate>
                <description>
                    <![CDATA[
                    <div class="code">
<p align="center">诀别诗</p>
<p align="center">出鞘剑杀气荡，诀别诗两三行。<br />风起无月沙场，千军万马独闯。</p>
<p align="left">_________________________</p>
<p align="left">此诗源于“诀别诗”一歌，歌词中缠绕着英雄气儿女情，但是“谁来为我黄泉路上唱，若我能死在你身旁，也不枉来人世走这趟”完全抹杀了一个英雄的形象，故将歌词提炼成上面的诗句自觉甚好。</p>
<p align="left"><a href="http://box.zhangmen.baidu.com/m?gate=1&amp;ct=134217728&amp;tn=baidubox,%E8%AF%80%E5%88%AB%E8%AF%97%20%20%E5%B0%91%E5%B9%B4%E6%9D%A8%E5%AE%B6%E5%B0%86%20%E5%8F%AF%E5%8F%AF&amp;word=wma,http://wma.54box.com/w34//19/4843/11839/qKmqYmpqmaepYJajopVvb2RrZWxpbTc$.wma,,%5B%BE%F7%B1%F0%CA%AB%5D&amp;si=%BE%F7%B1%F0%CA%AB;;%BA%FA%D1%E5%B1%F3;;64443;;64443&amp;lm=16777216">歌曲欣赏</a></p>
</div>                    <div>
                        作者：Lodger007 发表于 2007/01/16 22:07:00 <a href="https://blog.csdn.net/Lodger007/article/details/1485051">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1485051                    </div>
                    <div>
                        阅读：1105                     </div>
                    ]]>
                </description>
                <category></category>
            </item>
                    <item>
                                <title><![CDATA[[原]C++中强迫隐式转换this对象到基类所引发的思考]]></title>
                <link>https://blog.csdn.net/Lodger007/article/details/1483989</link>
                <guid>https://blog.csdn.net/Lodger007/article/details/1483989</guid>
                <author>Lodger007</author>
                <pubDate>2007/01/15 22:03:00</pubDate>
                <description>
                    <![CDATA[
                    <p>    《Effective C++》堪称C++之经典书籍，但是不能因为她是经典而对其唯命是从，相反应该带着自己的脑袋来思考书中的每一条款，只有这样才能有所得。</p>
<p>    故事发生在条款27（尽量少做转型动作），其中一段代码所产生的结果令我费解。</p>
<div class="code">class Window<br />{<br />public:<br />    virtual void onResize() { . . . }<br />    . . .<br />};<br /><br />class SpecialWindow : public Window<br />{<br />public:<br />    virtual void onResize()<br />    {<br />        static_cast&lt;Window&gt;(*this).onResize();<br />        . . .<br />    }<br />    . . .<br />};<br /></div>
<p>    书中对其解释如下：“一如你所期望的，这段代码将*this转型为Window，对函数onResize的调用也因此调用了Window::onResize。但恐怕你没有想到，它调用的并不是当前对象上的函数，而是稍早转型动作所建立的一个‘*this对象之base class成分’的暂时副本身上的onResize！”。</p>
<p>    难道，static_cast&lt;Window&gt;(*this)会创建一个Window临时对象？于是，我写了下面代码用于试验。</p>
<div class="code"><font color="#4c89b8">000001</font>    <font color="#2026a2">class</font> Window<br /><font color="#4c89b8">000002</font>    {<br /><font color="#4c89b8">000003</font>    <font color="#2026a2">protected</font>:<br /><font color="#4c89b8">000004</font>        <font color="#2026a2">int</font> _w , _h;<br /><font color="#4c89b8">000005</font>    <font color="#2026a2">public</font>:<br /><font color="#4c89b8">000006</font>        Window(<font color="#2026a2">const</font> <font color="#2026a2">int</font> w = 0, <font color="#2026a2">const</font> <font color="#2026a2">int</font> h = 0)<br /><font color="#4c89b8">000007</font>            : _w(w) ,<br /><font color="#4c89b8">000008</font>             _h(h)<br /><font color="#4c89b8">000009</font>        {<br /><font color="#4c89b8">000010</font>        }<br /><font color="#4c89b8">000011</font>        <font color="#2026a2">virtual</font> <font color="#2026a2">void</font> OnResize()<br /><font color="#4c89b8">000012</font>        {<br /><font color="#4c89b8">000013</font>            _w += 10;<br /><font color="#4c89b8">000014</font>            _h += 10;<br /><font color="#4c89b8">000015</font>            cout &lt;&lt; _w &lt;&lt; ',' &lt;&lt; _h &lt;&lt; endl;<br /><font color="#4c89b8">000016</font>        }<br /><font color="#4c89b8">000017</font>    };<br /><font color="#4c89b8">000018</font>    <br /><font color="#4c89b8">000019</font>    <font color="#2026a2">class</font> SpecialWindow : <font color="#2026a2">public</font> Window<br /><font color="#4c89b8">000020</font>    {<br /><font color="#4c89b8">000021</font>    <font color="#2026a2">public</font>:<br /><font color="#4c89b8">000022</font>        <font color="#2026a2">virtual</font> <font color="#2026a2">void</font> OnResize()<br /><font color="#4c89b8">000023</font>        {<br /><font color="#4c89b8">000024</font>            <font color="#2026a2">static_cast</font>&lt;Window&gt;(*this).OnResize();<br /><font color="#4c89b8">000025</font>    <font color="#346ee2">//        Window::OnResize();<br /></font><font color="#4c89b8">000026</font>            cout &lt;&lt; _w &lt;&lt; ',' &lt;&lt; _h &lt;&lt; endl;<br /><font color="#4c89b8">000027</font>        }<br /><font color="#4c89b8">000028</font>    };<br /><font color="#4c89b8">000029</font>    <br /><font color="#4c89b8">000030</font>    <font color="#2026a2">int</font> _tmain(<font color="#2026a2">int</font> argc, _TCHAR* argv[])<br /><font color="#4c89b8">000031</font>    {<br /><font color="#4c89b8">000032</font>        SpecialWindow sw;<br /><font color="#4c89b8">000033</font>        sw.OnResize();<br /><font color="#4c89b8">000034</font>        <font color="#2026a2">return</font> 0;<br /><font color="#4c89b8">000035</font>    }<br /></div>
<p>     随后，我将可执行文件反汇编，得到程序主函数的汇编代码：</p>
<div class="code">
<p>:00401000 BA0A000000         mov edx, 0000000A                       ;<font color="#ff0000">ecx中为对象基址</font><br />:00401005 015104                  add dword ptr [ecx+04], edx          ;<font color="#ff0000">&lt;－_w += 10</font><br />:00401008 015108                  add dword ptr [ecx+08], edx          ;<font color="#ff0000">&lt;－_h += 10<br /></font>:0040100B 8B4104                  mov eax, dword ptr [ecx+04]</p>
<p><font color="#ff0000">;以下代码仅执行了Window::onResize()中的cout &lt;&lt; _w &lt;&lt; ',' &lt;&lt; _h &lt;&lt; endl</font></p>
<p>* Reference To: <font color="#3366ff">MSVCP80.?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z</font>, Ord:0799h<br />                                  |<br />:0040100E 8B1538204000            mov edx, dword ptr [00402038]<br />:00401014 8B4908                          mov ecx, dword ptr [ecx+08]<br />:00401017 52                                    push edx<br />:00401018 51                                    push ecx</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A</font>, Ord:0675h<br />                                  |<br />:00401019 8B0D50204000            mov ecx, dword ptr [00402050]<br />:0040101F 50                                    push eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401020 FF1544204000            Call dword ptr [00402044]<br />:00401026 50                                   push eax<br />:00401027 E8D4010000              call 00401200<br />:0040102C 83C404                       add esp, 00000004<br />:0040102F 8BC8                            mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401031 FF1544204000            Call dword ptr [00402044]<br />:00401037 8BC8                             mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z</font>, Ord:0318h<br />                                  |<br />:00401039 FF1540204000            Call dword ptr [00402040]<br />:0040103F C3                                  ret</p>
</div>
<p>    如果将static_cast用被注释掉的Window::onResize替换，则得到下面反汇编代码：</p>
<div class="code">
<p>* Reference To: <font color="#3366ff">MSVCP80.?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z</font>, Ord:0799h<br />                                  |<br />:00401000 8B1538204000            mov edx, dword ptr [00402038]<br />:00401006 56                                   push esi<br />:00401007 8BF1                              mov esi, ecx                                ;<font color="#ff0000">由于后面需要用ecx保存函数调用参数</font><br />:00401009 B90A000000                mov ecx, 0000000A                   ;<font color="#ff0000">所以将对象基址存于esi中</font><br />:0040100E 014E04                         add dword ptr [esi+04], ecx      ;<font color="#ff0000">_w += 10</font><br />:00401011 014E08                         add dword ptr [esi+08], ecx      ;<font color="#ff0000">_h += 10<br /></font>:00401014 8B4E08                         mov ecx, dword ptr [esi+08]<br />:00401017 8B4604                         mov eax, dword ptr [esi+04]<br />:0040101A 52                                   push edx<br />:0040101B 51                                   push ecx</p>
<div><font color="#ff0000">;下列代码在同一对象上调用了两次输出，第一次在_w和_h增10后，第二次紧接在第一次之后</font></div>
<div><font color="#ff0000">;说明了先调用Window::onResize再继续SpecialWindow::onResize中输出代码</font></div>
<p>* Reference To: <font color="#3366ff">MSVCP80.?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A</font>, Ord:0675h<br />                                  |<br />:0040101C 8B0D50204000            mov ecx, dword ptr [00402050]<br />:00401022 50                                     push eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401023 FF1544204000           Call dword ptr [00402044]<br />:00401029 50                                  push eax<br />:0040102A E8B1010000              call 004011E0<br />:0040102F 83C404                       add esp, 00000004<br />:00401032 8BC8                           mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401034 FF1544204000            Call dword ptr [00402044]<br />:0040103A 8BC8                             mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z</font>, Ord:0318h<br />                                  |<br />:0040103C FF1540204000            Call dword ptr [00402040]<br />:00401042 A138204000                 mov eax, dword ptr [00402038]<br />:00401047 8B4E08                         mov ecx, dword ptr [esi+08]<br />:0040104A 8B5604                         mov edx, dword ptr [esi+04]<br />:0040104D 50                                  push eax<br />:0040104E 51                                  push ecx</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A</font>, Ord:0675h<br />                                  |<br />:0040104F 8B0D50204000            mov ecx, dword ptr [00402050]<br />:00401055 52                                    push edx</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401056 FF1544204000            Call dword ptr [00402044]<br />:0040105C 50                                  push eax<br />:0040105D E87E010000              call 004011E0<br />:00401062 83C404                        add esp, 00000004<br />:00401065 8BC8                            mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z</font>, Ord:0311h<br />                                  |<br />:00401067 FF1544204000            Call dword ptr [00402044]<br />:0040106D 8BC8                             mov ecx, eax</p>
<p>* Reference To: <font color="#3366ff">MSVCP80.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z</font>, Ord:0318h<br />                                  |<br />:0040106F FF1540204000            Call dword ptr [00402040]<br />:00401075 5E                                   pop esi<br />:00401076 C3                                  ret</p>
</div>
<p>    通过分析对比得知，static_cast&lt;Window&gt;(*this)将对象自身切割为了基类对象，在此后调用onResize过程中，对象便认为自己只是一个Window对象了，所以得到了上面的反汇编结果。</p>
<p>    但是，目前还不知如何解释第一种情况下输出结果为：10，10 [换行] 0 ，0。因为反汇编代码中只调用了一次cout！？</p>                    <div>
                        作者：Lodger007 发表于 2007/01/15 22:03:00 <a href="https://blog.csdn.net/Lodger007/article/details/1483989">原文链接</a> https://blog.csdn.net/Lodger007/article/details/1483989                    </div>
                    <div>
                        阅读：1821 评论：1 <a href="https://blog.csdn.net/Lodger007/article/details/1483989#comments" target="_blank">查看评论</a>                    </div>
                    ]]>
                </description>
                <category></category>
            </item>
            </channel>
</rss>
