﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-冰箱门-文章分类-CEGUI</title><link>http://www.cppblog.com/alienbox/category/11958.html</link><description>记录和粘贴一些有用的东东</description><language>zh-cn</language><lastBuildDate>Thu, 01 Oct 2009 14:04:48 GMT</lastBuildDate><pubDate>Thu, 01 Oct 2009 14:04:48 GMT</pubDate><ttl>60</ttl><item><title>cegui基础2</title><link>http://www.cppblog.com/alienbox/articles/97728.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 13:36:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97728.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97728.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97728.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97728.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: cegui&nbsp;6统一度量系统使用指南注意：此教程仅适用于CEGUI&nbsp;&gt;=&nbsp;0.4.0统一度量系统使得我们可以用相对部分和绝对部分共同来表示一个坐标或大小。这给窗口布局带来了极大的方便。比如：你可以用相对尺寸来表示高度，使用绝对大小表示宽度，或者混合使用。统一度量系统共有三种形式&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;U...&nbsp;&nbsp;<a href='http://www.cppblog.com/alienbox/articles/97728.html'>阅读全文</a><img src ="http://www.cppblog.com/alienbox/aggbug/97728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 21:36 <a href="http://www.cppblog.com/alienbox/articles/97728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cegui基础1</title><link>http://www.cppblog.com/alienbox/articles/97727.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 13:34:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97727.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97727.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97727.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97727.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: cegui渲染入门:&nbsp;至少需要3步,才可以使cegui运行起来1&nbsp;创建CEGUI::Renderer对象2&nbsp;创建CEGUI::System对象3&nbsp;调用渲染函数of&nbsp;course,实现真正的游戏GUI,你还需要装载相关的数据文件，进行一些最基础的初始话，你也需要处理用户输入。&nbsp;1&nbsp;创建&nbsp;CEG...&nbsp;&nbsp;<a href='http://www.cppblog.com/alienbox/articles/97727.html'>阅读全文</a><img src ="http://www.cppblog.com/alienbox/aggbug/97727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 21:34 <a href="http://www.cppblog.com/alienbox/articles/97727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记六-- 使用CEGUI解决具体问题</title><link>http://www.cppblog.com/alienbox/articles/97725.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97725.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97725.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97725.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97725.html</trackback:ping><description><![CDATA[<span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class=Apple-style-span style="FONT-SIZE: 14px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">本文讲述了如何实现以下几个具体问题：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、设置控件的背景为透明。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、以D3D9为渲染层的时候，Tooltip工作不正常（一闪而过）。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、模拟MessageBox。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<h2 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 33px; PADDING-TOP: 0px">1、设置控件的背景为透明</h2>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">有3种方法来解决这个问题：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、修改Imageset文件，提供相关的透明位图；<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">修改Looknfeel文件，使用透明位图进行绘制；<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">修改Scheme文件，使用新的外观配置。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、在程序里写如下代码：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">d_framewindow-&gt;setProperty("FrameEnabled","false");<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">d_framewindow-&gt;setProperty("BackgroundEnabled","false");</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、在LayoutEdit 中配置对象的FrameEnabled，和BackgroundEnabled属性都为false。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<h2 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 33px; PADDING-TOP: 0px">2、以D3D9为渲染层的时候，Tooltip工作不正常（一闪而过）。</h2>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">该问题是BUG引起的，但不是CEGUI本身的问题。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">出问题的语句在CEGuiD3D9BaseApplication.cpp中的这句：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 4px; MARGIN: 0px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 674px; WORD-BREAK: break-all; LINE-HEIGHT: 22px; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; ZOOM: 1; BACKGROUND-COLOR: rgb(230,230,230); -webkit-background-clip: initial; -webkit-background-origin: initial">
<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px; ZOOM: 1"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">guiSystem.injectTimePulse(GetTickCount()&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;d_lastTime);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span></div>
</div>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">明显是个有问题的语句。。。。这句话导致CEGUI内部的时间流逝记数完全是个乱的....并且比现实至少快1000倍。Tooltip默认显示7.5秒，7.5S * 000.1 = 7.5ns，所以显示的时候一闪而过。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">改为</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 4px; MARGIN: 0px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 674px; WORD-BREAK: break-all; LINE-HEIGHT: 22px; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; ZOOM: 1; BACKGROUND-COLOR: rgb(230,230,230); -webkit-background-clip: initial; -webkit-background-origin: initial">
<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px; ZOOM: 1"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">unsigned&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">int</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;time_diff&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">=</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;GetTickCount()&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;d_lastTime;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>d_lastTime&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">=</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;GetTickCount();<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>guiSystem.injectTimePulse(&nbsp;time_diff&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">*</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">0.001f</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">)</span></div>
</div>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">而以OpenGL或者OGRE的渲染层则不会出现这个问题。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<h2 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 33px; PADDING-TOP: 0px">3、模拟MessageBox</h2>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;1、使用LayoutEdit 搭建一个MessageBox，然后在程序的适当位置加入如下代码：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 4px; MARGIN: 0px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 674px; WORD-BREAK: break-all; LINE-HEIGHT: 22px; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; ZOOM: 1; BACKGROUND-COLOR: rgb(230,230,230); -webkit-background-clip: initial; -webkit-background-origin: initial">
<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px; ZOOM: 1"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">bool</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;handleMessageBoxBtnOKClicked(&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">const</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI::EventArgs</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;args);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">void</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI_MessageBox();<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">bool</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;handleMessageBoxBtnOKClicked(&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">const</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI::EventArgs</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;args)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top ;?="" ;="" none?;="" document.getelementbyid(?_158_432_closed_text?).style.display="inline" document.getelementbyid(?_158_432_closed_image?).style.display="inline" document.getelementbyid(?_158_432_open_text?).style.display="none"></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">using</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">namespace</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">const</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;WindowEvetArgs</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;WindowArgs&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">=</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;static_cast</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&lt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">const</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;WindowEventArgs</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">(args);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;WindowArgs.window</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">getParent()</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">setModalState(</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">false</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;WindowArgs.window</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">getParent()</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">setVisible(</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">false</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;WindowArgs.window</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">getParent()</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">destroy();&nbsp;&nbsp;&nbsp;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">void</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI_MessageBox(</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">const</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI::String</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;layoutfileName)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top ;?="" ;="" none?;="" document.getelementbyid(?_494_948_closed_text?).style.display="inline" document.getelementbyid(?_494_948_closed_image?).style.display="inline" document.getelementbyid(?_494_948_open_text?).style.display="none"></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">using</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">namespace</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">//</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;读取MessageBox的布局文件</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;Window</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">*</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;msgbox&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">=</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;CEGUI::WindowManager::getSingleton().loadWindowLayout(&nbsp;layoutfileName&nbsp;);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">//</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;注册MessageBox的按钮事件</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;msgbox</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">getChild(</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">"</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">Frame/OK</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">"</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">)</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">subscribeEvent(&nbsp;Window::EventMouseClick,&nbsp;Event::Subscriber(&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&amp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">handleMessageBoxBtnOKClicked)&nbsp;);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">//</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;将MessageBox的属性设置为模态窗口</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;msgbox</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">setModalState(</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,255); LINE-HEIGHT: 22px; PADDING-TOP: 0px">true</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">//</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;显示MessageBox</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,128,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;CEGUI::System::getSingleton().getGUISheet()</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">-&gt;</span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px">addChildWindow(msgbox);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,0,0); LINE-HEIGHT: 22px; PADDING-TOP: 0px"><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><img style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MAX-WIDTH: 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; LINE-HEIGHT: 22px; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span></div>
</div>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">不要担心关于删除的问题，CEGUI采用延后一贞删除的策略，任何Destory操作都延后了。可以查看CEGUISystem的代码。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">在MS里我们一般这样写关于MBox的代码：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">int ret = MessageBox("123","123",NULL,MB_OKCANCEL);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">if(&nbsp;ret ==&nbsp;6&nbsp;)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">{}<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">else<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">{}</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">别想实现象MS里的MessageBox，否则将面临相当复杂的&#8220;重入&#8221;问题。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">而且因为我们事先已经知道如果MessageBox的某按钮被按下时需要做什么事，所以只需要把这部分的逻辑事先写好，然后注册到MessageBox里的相应按钮对象上去就可以了。<br><br>原文地址<a href="http://thatax.blog.163.com/blog/static/20892680200882711513145/"><u><font color=#0000ff>http://thatax.blog.163.com/blog/static/20892680200882711513145/</font></u></a></p>
</span></span>
<img src ="http://www.cppblog.com/alienbox/aggbug/97725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:51 <a href="http://www.cppblog.com/alienbox/articles/97725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记七--如何扩展CEGUI控件库</title><link>http://www.cppblog.com/alienbox/articles/97726.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97726.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97726.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97726.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97726.html</trackback:ping><description><![CDATA[<span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class=Apple-style-span style="FONT-SIZE: 14px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">本文是扩展CEGUI控件库的第2部分，对FalButton.CPP文件的分析记录。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">目的是探究下如何去控制 Renderer，从而彻底实现一个CEGUI没有的控件类型。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">但是分析未完成，希望这些半成品能对大家有用。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">PS：由于公司的网络限制，所以Blog很长时间未更新。家里还没电脑，上班偷偷写的....<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">下次将整理下单独编译CEGUI，并给出CEGUI与Ogre结合的详细步骤。</p>
<h1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 44px; PADDING-TOP: 0px">
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 44px; PADDING-TOP: 0px">
</h1>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">//=====================================================================================================================<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">// 2008.4.18<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">//=====================================================================================================================<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">本来打算今天探究下如何去控制 Renderer，从而彻底实现一个CEGUI没有的控件类型。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">首先从FalButton开始切入，但是发现问题远没有想象中那么简单。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在先前对Falagard的翻译中得知，如果要绘制一个控件，需要定义规定的StateImagery。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">所以我期望在FalButton中看到这些状态的集合，否则手册里规定的状态从哪来呢？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">实际上我看到的是 "Pushed" : "PushedOff"; "Disabled" "Hover"之类的 魔字符串！<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在知道这些状态是哪来的了：在CEGUIfalagardWRBase项目里相关文件里这样定义的！这可真要命，太不可接受了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">OK，既然已经知道如何定义需要实现哪些状态，再找找和显示相关的代码，在这个对象中，只有一句跟这个相关：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">wlf.getStateImagery(actualStateName(state)).render(*w);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、wlf是WidgetLookFeel，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、getStateImagery返回StateImagery，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">获取WidgetLookFeel的唯一对象，然后得到一个叫actualStateName(state)的StateImagery，并调用它的render()方法来进行绘制。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">以w为参数。w是什么？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">w是d_window，继续查找这个成员变量，发现是WindowRenderer类的成员变量，回头看H文件的定义，FalButton继承自WindowRenderer。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">跟WindowRenderer类似的还有很多***Renderer的文件，所以推测Button，Frame等简单控件类型的绘制都继承这个WindowRenderer。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">而List等复合控件类型需要另外特别的***Renderer来实现绘制。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">***Renderer里实现绘制，确实是这样的吗？如果是这样的话，为什么要调用StateImagery对象的render()方法。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果要绘制什么东西，一定需要绘制它的参数信息，包括数据和规则，既然***Renderer是作为参数传递给StateImagery的render()，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">那么***Renderer要么给出了绘制方法，要么给出数据，要么给出规则。现在虽然不能确定，但是应该是提供规则的可能性大一些。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">[后面将证明是错误的，它提供的不是规则而是数据。]<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在又有2条路了：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、WindowRenderer是什么东西。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、StateImagery的render()到底做了什么事。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">先查看WindowRenderer类的介绍：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">// Base-class for the assignable WindowRenderer object<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">这是什么，可支持的窗口渲染器对象的基类？显然不太好对付。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">从类视图中可以看到它的派生类，找个复合控件,EditboxWindowRenderer类的介绍：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">// Base class for the EditboxWindowRenderer class<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">OK，现在知道如果不看***Renderer的代码的话，是不知道这个类做什么用的了。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">所以还是顺着render()看。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">有2个版本，但结构差不多，所以只盯着一个看先。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">先看这个函数的介绍，没什么很详细的信息....这说明如果我们了解整个设计目的的话，这个函数是理所当然的。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">没什么好说的，RTFS。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">void StateImagery::render(Window&amp; srcWindow, const ColourRect* modcols, const Rect* clipper) const&nbsp;&nbsp;&nbsp;<span class=Apple-converted-space>&nbsp;</span><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;float base_z;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;// render all layers defined for this state<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;for(LayersList::const_iterator curr = d_layers.begin(); curr != d_layers.end(); ++curr)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;// TODO: Magic number removal<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;base_z = -0.0000001f * static_cast&lt;float&gt;((*curr).getLayerPriority());<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;(*curr).render(srcWindow, base_z, modcols, clipper, d_clipToDisplay);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;}<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">}</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">又冒出很多新鲜玩意出来了，就知道！<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">LayersList？估计就是 XML里的Layer关键字定义的那段东西，在CPP文件里的对应对象，暂时不管它的细节。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">getLayerPriority？优先权？为什么要和-0.0000001f相乘？请教老大之后得知，这个Z值是给3D渲染器用的。因为<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">getLayerPriority返回的是整数，而3D渲染器的Z值是0到1，所以才需要这么乘一下。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">再看看 *cuur.render() 接受的参数：1个窗口的引用，1个Z值，1个顶点颜色矩形，一个裁减矩形，还有一个d_clipToDisplay？</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">bool d_clipToDisplay; //!&lt; true if Imagery for this state should be clipped to the display instead of winodw (effectively, not clipped).<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果为true，就是相对于显示器进行裁减，而不是窗口（实际上没裁减）？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">构造函数里的初始化为d_clipToDisplay(false)，搜索操作这个变量的方法，发现跟XMLHelper扯上关系，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">而整个CEGUI里没有调用这个方法来设置这个变量，看来是放出去给外部进行设置的，那就不管了先，等以后在某个例子里发现的时候再回头看。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">好吧，现在继续LayersList的render()。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;// render all sections in this layer<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;for(SectionList::const_iterator curr = d_sections.begin(); curr != d_sections.end(); ++curr)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;(*curr).render(srcWindow, base_z, modcols, clipper, clipToDisplay);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">又是个遍历，不过这次遍历的是SectionList。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">再次回忆上次LookNFeel里的定义：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">StateImagery<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;layer<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;section = ImagerySection</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">而ImagerySection的层次是：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">ImagerySection<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;ImageryComponent<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;Area<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;Image<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;VertFormat</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">那在这里预测，如果查找(*curr).render()，一定是遍历一个ComponentList，然后调用 (*xx).render()。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">不过找到的是获取ImagerySection的代码：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">const ImagerySection* sect =<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp; &amp;WidgetLookManager::getSingleton().getWidgetLook(d_owner).getImagerySection(d_sectionName);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">然后sect-&gt;render(...);</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">结果与预测的不太一样，在这个地方已经开始使用try和catch，说明已经开始实际的绘制操作，马上就可以知道WindowRenderer提供<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">的到底是数据信息，还是规则信息了！<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">与预测不一样的地方有2个：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、获取的不是Component，而是ImagerySection，为什么？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、没有遍历，为什么？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">回头查看SectionList，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">typedef std::vector&lt;SectionSpecification&gt; SectionList;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">说明Layer里可以有很多section，而section再来指出是哪个ImagerySection。所以应该先获取ImagerySection。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">而section和ImagerySection是1对1的关系，所以没有遍历。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">继续看ImagerySection的render(...)，在里面发现了3个遍历：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">FrameList:&nbsp;&nbsp; FrameComponent&nbsp;&nbsp; 的render()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">ImageryList: ImageryComponent 的render()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">TextList:&nbsp;&nbsp;&nbsp; TextComponent&nbsp;&nbsp;&nbsp; 的render()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">FrameComponent&nbsp;&nbsp; 的render()里进行了一大堆的计算，然后分别绘制了Frame的4个角、4条边、1个背景。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">虽然没看，但估计其他2个差不多。这就是实际的绘制工作了！</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在回头看看，Button有Frame吗？之前写Button的时候，只写了ImageryComponent。而我从FalButton开始切入，最后却看到了<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">FrameComponent的绘制，这说明了什么？</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">再从更大范围上整理一下：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">我在XML文件里定义 Button的渲染器 FalButton，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">FalButton里（通过d_window）判断当前按钮的状态（现在对于***Renderer到底是个什么还不清楚，等整理完就去看。），<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">再通过这个状态来（通过WidgetLookFeel对象）得到对应的StateImagery对象。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">然后调用StateImagery对象的render()方法，以*w为参数。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">然而现在来看，从调用StateImagery对象的render()方法开始，已经跟Button没关系了，一切都是按照规定好的流程在进行。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">这说明如果我们要使用CEGUI的话，从这里开始就是不变的东西，如果要改变的话，要做的事情就比较多了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">在这之前，我们能控制的（自由度）就是（添加或减少一个）控件状态的定义。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">但是在之前我写Button1的时候，没实现Hover状态下的代码，然后当我鼠标移到Button1的时候，就没图片显示出来。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果按这个流程的话，得不到StateImagery对象，就不会调用render，所以就没图片显示出来，这就说的通了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">今天就到这里，下周顺着WindowRenderer开始查。</p>
</span></span>
<img src ="http://www.cppblog.com/alienbox/aggbug/97726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:51 <a href="http://www.cppblog.com/alienbox/articles/97726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记五-- 如何如何扩展CEGUI库</title><link>http://www.cppblog.com/alienbox/articles/97724.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:50:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97724.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97724.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97724.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97724.html</trackback:ping><description><![CDATA[<span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class=Apple-style-span style="FONT-SIZE: 14px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left">
<h1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 44px; PADDING-TOP: 0px">CEGUI学习笔记五-- 如何如何扩展CEGUI库（一）</h1>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">本文以FrameWindow为对象，粗略的讲述了如何扩展CEGUI库，从而添加一个全新的基础控件类型。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<h3 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 25px; PADDING-TOP: 0px">需求：</h3>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果你使用过FrameWindow，那么你一定可以发现，FrameWindow的4个角落都可以进行缩放。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果我们需要固定某个角呢？比如制作一个聊天框，它可以放大缩小，但是左下角锚定。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">最开始我一个个的看例子，似乎除了4角全缩放，就是不能缩放，看来例子里没有我们需要的。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">再去看FrameWindow的头文件和CPP文件，只有一个关于设置是否可以缩放的函数SetSizingEnable(bool Setting)，和几个protected属性、根据鼠标坐标来判断是否进行缩放的函数。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">看来FrameWindow派生时，没有做锚定某个角的处理。那么就去Window的头文件和CPP文件里找找吧。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">很可惜结果也是没有。</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在的解决方法有2种：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、修改或继承FrameWindow，使之支持锚定角落。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、编写函数，响应EventMouse DOWN、Move、UP事件，使具体对象支持锚定缩放。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">我选择了前者。因为这样修改之后的FrameWindow更加方便，而且我也讨厌去计算那些烦人的坐标，何况FrameWindow里本身就有计算这些坐标的内部方法。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">OK，我们需要做的就是定义下规则：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">// AchorCorner<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#define&nbsp;AnchorLeftTop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x01<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#define AnchorLeftBottom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x02<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#define AnchorRightTop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#define AnchorRightBottom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x08</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">然后我们定义关于锚定的变量</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">private:<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp; int d_anchorCorner;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">之后我们需要在构造函数里添加关于我们的变量的初始化。因为我们希望对FrameWindow的改变不会对其原有的行为有所影响。因此我们将锚定点设置为：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">d_anchorCorner = 0;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">再来我们定义关于设置锚定的方法：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">public:<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp; void setAnchorCorner( int anchorCorner);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;getAnchorCorner( void);</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">并且实现他们，先是获取对象的锚定状态：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">int FrameWindow::getAnchorCorner(void)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp; return d_anchorCorner;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">}</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">然后是设置锚定，在这里，我采用以下规则：&#8220;锚定角由用户给出，如果该角落已经被设置，则将这个角取消&#8221;。这样，我们的set函数就可以给对象既添加锚定信息，又可以删除锚定信息了：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">void FrameWindow::setAnchorCorner( int anchorCorner)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp; if ( d_anchorCorner&nbsp; &amp;&nbsp; anchorCorner)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d_anchorCorner&nbsp;&nbsp;^= anchorCorner;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp; else<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d_anchorCorner&nbsp; |= anchorCorner;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">}</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在我们重新编译一下CEGUI工程里的CEGUIBase，让它重新生成一个dll(DEBUG)和LIB(DEBUG_Static)。并且将原来的替换掉，就可以使用我们刚刚修改的FrameWindow了--只是在代码里。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">好吧，现在我们已经开始往CEGUI的源代码里胡乱加代码了，因此一切都会变的不那么顺畅。实际上我想说的就是，你的LayoutEdit识别不出来这个FrameWindow了，如果要Add的话，会使劲的抛异常！</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">你可以试试不用布局器，而是写代码来进行界面布局。相信我，你一定会被统一坐标系统弄疯。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">我的解决方案就是：全盘COPY一次FrameWindow的代码，然后添加改动，把它改个名字，比如frame2，然后作为一个新的控件使用。但是没完，我们还需要为这个控件添加属性。这个可以全盘照抄FrameWindowProperty.h和.cpp。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">上个步骤不难，不过在这里还是想提醒下大家，注意命名的统一。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">接着，为了配合我们的新控件frame2，我们需要<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在Scheme文件里Copy映射，并修改相应名称。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">你也可以在视感文件里COPY FrameWindow的外观配置，然后尝试着修改一下。（我尝试将默认背景改为透明背景时，这一步对我来说异常痛苦...我恨XML...），或者直接使用FrameWindow的外观来作为frame2的外观--它们俩长的完全一样！（在这里我使用Taharez风格的相关文件进行的实验。）</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">去LayoutEdit看看，它还是抛异常。肯定有什么不对劲的地方，从异常提示的信息可以看到，我们的frame2不在WindowFactory的创建列表里面。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">OK，这表明我们还没有完全的COPY FrameWindow。为了能让WindowFactory顺顺当当的创建我们的frame2，接着找找关于FrameWindow的代码，看看我们有没有漏掉什么include ，或者 大规模的添加控件的代码。通过搜索整个解决方案，有以下几个文件跟工厂和FrameWindow相关：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUI.h(75)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIBaseFactories.cpp(43)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIBaseFactories.h(45)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIBaseFactories.h(80)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIForwardRefs.h(88)</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">照着改就行。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">先在代码里测试下frame2这个新玩意，如果我没有漏掉什么的话，你应该可以用代码创建一个frame2窗口，它和FrameWindow一模一样，除了多了个缩放锚定功能。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">以上做的事对我来说有点烦琐，或者中间穿插了一些别的事情，总之我弄了1天...最后思维敏捷度降为负数，人完全处于放空状态了.oO。现在回头再看我做的事情，只记得当时人搞的晕晕的，但好象都是些CVCV，然后修改下名字...</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">照着FrameWindow做个frame2出来不难，同时这也是很好的练习目标，在完成之前，我在这里等你。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">好了，现在我不得不告诉你一个噩耗：LayoutEdit依然不支持我们的frame2！而且报的错误还是frame2这个类型在工厂里不存在。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">恩，LayoutEdit的文件夹下面有个ceguibase.dll，让我们来编译一个Release版本的dll扔进去看看？</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">满怀希望的运行LayoutEdit，结果还是报错！</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">OK，肯定还有什么地方是我没研究到的，不过这已经属于辅助工具开发的范畴了。当然将来在项目运用中，肯定会修改LayoutEdit，使它更加完善和强大，但这不是研究CEGUI本身的事情，所以对这个问题，我觉得暂时就放一放吧。等将来更加熟悉CEGUI的时候再回头来解决我们一路遗留下来的知识盲点。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">可是总得有个解决方案，不是吗？以下是我的解决方法：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">假设你在Scheme文件里将frame2映射为&#8220;Taharez/Frame2&#8221;，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">那么你可以在LayoutEdit里添加FrameWindow，<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">然后手工修改.layout文件里面的Taharez/FrameWindow，改为Taharez/Frame2。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">这样，在载入文件的时候，程序就生成的是我们的frame2了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">我迫切希望与大家交流，一同研究这个CEGUI，上班的时候不能上QQ，只能上MSN：<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#117;&#110;&#49;&#50;&#51;&#52;&#53;&#54;&#55;&#54;&#53;&#64;&#108;&#105;&#118;&#101;&#46;&#99;&#110;"><font style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px" color=#336699>kun123456765@live.cn</font></a>。我MSN上一个好友都没有，它还不支持QQ一样的查找和群....555</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">在这里对下一步的主要学习方向做个展望。<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">举个例子：StaticImage和StaticText 都是DefaultWindow，DefaultWindow从代码上来看，就是Window。那就是说全部的控件都可以显示一个背景图片咯？但是为什么这俩个对象一个可以显示图片，一个不能显示图片呢？<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">是谁在控制这些具体控件类型的表现形式？在Scheme文件里，我们可以看到，这2个控件类型的FalagardRender不同，这个渲染器模块是如何工作的？</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">显然我们对frame2的扩展工作还没有结束！</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
</span></span>
<img src ="http://www.cppblog.com/alienbox/aggbug/97724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:50 <a href="http://www.cppblog.com/alienbox/articles/97724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记四-- 如何输入中文</title><link>http://www.cppblog.com/alienbox/articles/97723.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:48:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97723.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97723.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97723.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97723.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2008.5.5CEGUI使用utf8编码格式。这就意味着我们可以很简单的就显示中文。1、弄个包含中文的字体，在这里我借用大多数例子里的 &#8220;C：/windows/Font/simhei.ttf&#8221;文件。把这个文件拷贝到Datafiles文件夹的Font文件夹里。2、随便照着一个 .Font文件，自己写一个simhei.font文件。可以用TXT写，然后保存，有...&nbsp;&nbsp;<a href='http://www.cppblog.com/alienbox/articles/97723.html'>阅读全文</a><img src ="http://www.cppblog.com/alienbox/aggbug/97723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:48 <a href="http://www.cppblog.com/alienbox/articles/97723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记二-- FalagardSkinning使用手册第2章翻译</title><link>http://www.cppblog.com/alienbox/articles/97722.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:45:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97722.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97722.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97722.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97722.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文翻译了FalagardSkinning使用手册的第2章。阅读完本文，你将了解如何自定义一个控件外观的方法，并且将看见自己刚刚的成果！&nbsp;&nbsp;首先需要说明的是，这个部分不是教你如何使用XML。因此我们假定读者熟悉并知道如何使用XML。2.1开始前：一个空皮肤在我们添加任何关于控件外观的代码之前，先让我们写一个XML文件的轮廓。这很简单，如下格式：...&nbsp;&nbsp;<a href='http://www.cppblog.com/alienbox/articles/97722.html'>阅读全文</a><img src ="http://www.cppblog.com/alienbox/aggbug/97722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:45 <a href="http://www.cppblog.com/alienbox/articles/97722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEGUI学习笔记一--FirstWindow和FalagardDemo1分析</title><link>http://www.cppblog.com/alienbox/articles/97721.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:42:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97721.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97721.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97721.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前言&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该系列文章将记录我在学习CEGUI(0.6.0)时碰到的一些问题和得出的心得体会，适合没有任何CEGUI基础的朋友看。我会不定期的将自己的学习整理成笔记，同时由于我是本月刚接触CEGUI，也是正在学习的阶段，所以热烈欢迎各路朋友和我探讨、交流、指教。最终目的是想在基于OGRE图像库的项目中应用CEGUI，...&nbsp;&nbsp;<a href='http://www.cppblog.com/alienbox/articles/97721.html'>阅读全文</a><img src ="http://www.cppblog.com/alienbox/aggbug/97721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:42 <a href="http://www.cppblog.com/alienbox/articles/97721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs2005环境下编译CEGUI 0.6.0</title><link>http://www.cppblog.com/alienbox/articles/97720.html</link><dc:creator>征</dc:creator><author>征</author><pubDate>Thu, 01 Oct 2009 12:40:00 GMT</pubDate><guid>http://www.cppblog.com/alienbox/articles/97720.html</guid><wfw:comment>http://www.cppblog.com/alienbox/comments/97720.html</wfw:comment><comments>http://www.cppblog.com/alienbox/articles/97720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alienbox/comments/commentRss/97720.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alienbox/services/trackbacks/97720.html</trackback:ping><description><![CDATA[<span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class=Apple-style-span style="FONT-SIZE: 20px; COLOR: rgb(121,179,196); FONT-FAMILY: 微软雅黑, 黑体, Arial, Helvetica, sans-serif; TEXT-ALIGN: left"><span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class=Apple-style-span style="FONT-SIZE: 14px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-ALIGN: left">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2008.4.9</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、修改了 第4节.前言，补充了关于图象库SDK与CEGUI的关系，添加了DX9.0C SDK的连接</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、修改了 第4.2.1.2节，补充了 两个项目之间的依赖关系。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;2008.4.12</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、修改了 第1节 前言，补充了关于DX9的相关信息。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、修改了 第4节 前言，补充了关于 找不到d3d9.h之类的一系列错误。</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、编译CEGUI发布版源代码</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;注： 现在网上还没有关于如何在VS2005中编译CEGUI 0.6.0的文章，但是对于发布版来说，0.5.0和0.6.0的编译没有任何区别。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">我更改了原著中关于CEGUI 相关版本和资源URL，特此声明。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUI官方网站：<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://www.cegui.org.uk/">http://www.cegui.org.uk/</a></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2008.4.12</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUI 0.6.0的源代码里已经实现了D3D9的渲染层，如果你需要从源代码级开始编译，则需要安装DX9.0c SDK. 如果不想安装DX9 SDK，则需要把DirectX9GUIRenderer项目排除掉。</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">该文章转载自 光线引擎官方论坛 论坛首页&nbsp;-&gt;&nbsp;光线引擎交流&nbsp;-&gt;&nbsp;cegui界面&nbsp;-&gt;&nbsp;[原创]vs2005环境下编译CEGUI</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">URL：<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://www.lightengine.cn/bbs/dispost.asp?boardid=16&amp;postid=73">http://www.lightengine.cn/bbs/dispost.asp?boardid=16&amp;postid=73</a></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">作者：逍遥游</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">时间：2008-2-24 12:56:46</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">一、下载CEGUI0.6.0源代码包，</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://jaist.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-0.6.0.zip">http://jaist.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-0.6.0.zip</a><a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://www.cegui.org.uk/wiki/index.php/CEGUI_Downloads_0.6.0"></a>&nbsp;。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">二、下载依赖文件包dependencies package，<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip"></a></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip&nbsp;。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">三、解压CEGUI源代码包，将dependencies解压后，复制到CEGUI源代码根目录下。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">四、进入CEGUI代码目录下的makefiles文件夹，打开premake目录，执行build_vs2005批处理文件。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">五、好了，打开CEGUI方案（就是在makefiles\premake文件夹中生成的CEGUI.sln,小龙注），现在就可以开始编译了，注意要选择&#8220;Debug&#8221;和&#8220;'Release&#8221;生成相应的版本。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">六、进入CEGUI代码Bin和Lib，看看你的成就吧！</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">备注：打开工程后，不用更任何设置。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;以下就是原创啦</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、编译使用SVN得到的CEGUI源代码</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、得到源代码</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、下载SVN，<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://tortoisesvn.net/downloads">http://tortoisesvn.net/downloads</a>，注意它针对32位和64位操作系统有2个不同的版本，下载的时候请注意区分下。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、安装后，新建一个文件夹，这里假设名字为cegui。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、对它右键，选择SVN Checkout...</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、在弹出的对话框中， URL of repository：填写<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://crayzedsgui.svn.sourceforge.net/viewvc/crayzedsgui/cegui_mk2/">http://crayzedsgui.svn.sourceforge.net/viewvc/crayzedsgui/cegui_mk2/</a>。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">5、点击OK。这样就把最新的代码下载下来了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">需要注意的是，使用这种方式下载下来的代码，可能是正在进行改动，或者调试中的代码。相信找到这里来的人多是和我一样的新手程序员，所以我们还是不要随便使用SVN的提交功能，只潜水下最新代码就好了：）</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、编译源代码</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、下载依赖文件包dependencies package</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip">http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip</a>&nbsp;。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、为了统一，解压缩后将dependencies放到cegui同级的目录，实际上在生成.sln操作之前，放哪都可以。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、下载premake.exe</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://nchc.dl.sourceforge.net/sourceforge/premake/premake-win32-3.5.zip">http://nchc.dl.sourceforge.net/sourceforge/premake/premake-win32-3.5.zip</a></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、将premake.exe复制到 cegui/cegui_mk2/trunk/project/premake文件夹</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、执行bulid_vs2005.bat，将会在同级目录下生成CEGUI.sln。从这里开始，与直接编译发布版没啥区别了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">需要注意的是，[项目和解决方案]-[VC++目录] 中关于 dependencies package 的路径可能不正确。在编译之前需要确认一下。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">5、截止本文发表之时，文件CEGUIFactoryModule.cpp 的头文件路径设置不正确。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">原为： "../WindowRenderSets/Falagard/include/FalModule.h"</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">改为： "WindowRenderSets/Falagard/FalModule.h"</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">就可以编译通过了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">6、去cegui/cegui_mk2/truck 的/bin 和/lib文件夹看看生成的东西吧。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">7、生成的tolua++cegui_st_d.exe无法直接运行，因为缺少lua_d.dll，该DLL文件在dependencies/bin目录下。</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;3、配置刚刚编译好的CEGUI</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、如果我们需要运行一个包含CEGUI的程序，除了需要我们刚才编译出来的一堆 xxx_d.lib。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">还需要CEGUI依赖文件包里的.dll，编译则需要.lib。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、之前如果你没有动sln的设置的话，应该是在Debug_Static模式下进行编译的，但是一般我们是不需要Static类型的LIB的。所以请使用Debug模式重新编译一次。（OK，我很坏）</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、我们手动建立一个SDK目录，结构模式如下：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUI0.6.0SDK</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--- include&nbsp; //&nbsp;头文件</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--- lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 库文件</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--- output&nbsp;&nbsp;&nbsp; // 生成的程序所需要的DLL，以前我们直接扔进了System32文件夹，现在我们会把程序的生成目录设置到这里，当然，你也可以把这些DLL扔到System32文件夹。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、复制CEGUI里相关的文件</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">将cegui_mk2/truck/cegui/include文件夹下的全部文件拷贝到include文件夹。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">将cegui_mk2/truck/lib中重新生成的 xxx_d.lib全部拷贝到lib文件夹。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">5、复制CEGUI 依赖文件包里相关的文件</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">将dependencies/include中的文件全部拷贝到include文件夹。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">将dependencies/lib中的文件全部拷贝到lib文件夹。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">将dependencies/bin中的文件全部拷贝到output文件夹</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">6、设置VS2005&nbsp; 工具-选项-项目和解决方案-VC++目录 里相关的include 和lib的查找路径。</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;4、编译CEGUI例子</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">使用CEGUI时，需要自己提供Renderer（渲染层模块）。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">因此要编译CEGUI的例子，你至少要装OpenGL或者DX 8.1以上，或OGRE的SDK。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">这里我使用的是<a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,247,116); LINE-HEIGHT: 22px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none" href="http://www.crsky.com/soft/153.html">DX9.0 SDK，November 2007</a></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在进行以下步骤之前，请确定自己的VS2005至少配置了一个图象库的SDK。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">事实上，VS自带DX8.1 SDK 和 OpenGL基础SDK。如果没有特别安装SDK，依然可以编译通过，不过需要调整项目所包含的文件。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2008.4.12</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果在编译的时候提示找不到D3D9.H，首先排除D3D9相关的东西，包括config.h里的宏定义，将</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#define CEGUI_SAMPLES_USE_DIRECTX_9注释。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">另外，我在不装SP1的VS2005上只使用OpenGL渲染层，程序编译通过，但是运行时，系统提示：应用程序正常初始化（0XC0150002）失败。暂时未解决....</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、使用premake生成工程</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、直接运行 bulid_samples_vs2005.bat，会生成一个CEGUISamples .sln。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、运行这个SLN，里面就很多啦。注意看一下这个工程里各个项目的项目依赖关系和生成顺序，单独生成各个项目的EXE文件。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、cegui/cegui_mk2/truck/bin里会生成各个项目的exe文件，运行这些文件需要dependencies/bin目录下的DLL。建议把所有DLL都拷贝到cegui/cegui_mk2/truck/bin文件夹下。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、编译一下看看？</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、手动建立工程</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、编译公共文件</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">使用premake生成固然方便，但是无法知道这些个SLN的具体设置，实在是心里没底。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">现在我们以Sample.FalagardDemo1为例，手动使例子工程跑起来。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、创建一个新工程（解决方案），我们假定叫CEGUI_Sample_sln。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、为该工程添加一个新项目，我们假定叫CEGUI_Sample_Comm。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、将cegui/cegui_mk2/truck/Sample/common/include件夹内的文件（和对应的CPP文件）添加到刚才创建的新项目CEGUI_Sample_Comm中：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">注意路径问题，</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">我是直接放同一个文件夹CEGUI_Sample_sln / CEGUI_Sample_Comm / CEGUI_Sample_Comm / 里了</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiBaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // *必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiD3D81BaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // DX8.1渲染层</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiD3D9BaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// DX9.0渲染层 如果没有安装DX9.0SDK，就不要包含</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiIrrlichtBaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Irrlicht渲染层 如果没有安装Irrlicht1.4SDK，就不要包含</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiOgreBaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Ogre渲染层&nbsp;&nbsp;&nbsp; 如果没有安装Irrlicht1.4SDK，就不要包含</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiOpenGLBaseApplication.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // OpenG渲染层 如果没有安装任何SDK，就是必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiRendererSelector.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // *必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGuiSample.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// *必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUISamplesConfig.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 该文件在你使用Ogre或OpenGL时是必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">Win32AppHelper.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 该文件在你使用DX9.0渲染层时是必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">Win32CEGuiRendererSelector.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// *必须的</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、在 解决方案资源管理器 中选择 CEGUI_Sample_Comm。修改以下各个项目属性：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-常规-输出目录：先前我们建立的CEGUI0.6.0SDK/output</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-常规-中间目录：./Debug</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-项目默认值-配置类型：动态库（.dll）。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-项目默认值-字符集：使用多字节字符集。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-C/C++ - 预处理器-预处理定义：添加&#8220;CEGUISAMPLE_EXPORTS&#8221;。&nbsp;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-连接器-输入-附加依赖项：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIBase_d.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">freeglut_d.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">OpenGLGUIRenderer_d.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">DirectX9GUIRenderer_d.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">GLU32.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">5、编译一下？&nbsp;如果正确的话，output文件夹里会多出一堆DLL。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、编译例子Sample.FalagardDemo1</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">1、为CEGUI_Sample_sln添加第2个项目，我们假定叫FalagardDemo1。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">2、将FalagardDemo1的源代码添加（拷贝）到这个项目里来。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">3、在 解决方案资源管理器 中选择 CEGUI_Sample_Comm。修改以下各个项目属性：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-常规-输出目录：先前我们建立的CEGUI0.6.0SDK/output</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-常规-中间目录：./Debug</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-项目默认值-配置类型：Windows应用程序（.exe）。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-项目默认值-字符集：使用多字节字符集。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-C/C++ - 预处理器-预处理定义：改为</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&#8220;_CRT_SECURE_NO_DEPRECATE&#8221;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&#8220;HAVE_CONFIG_H&#8221;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&#8220;_DEBUG&#8221;</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">项目-属性-配置属性-连接器-输入-附加依赖项：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">../../../../output/CEGUI_Sample_Comm.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">(这个路径根据自己实际情况进行设置，或者:项目-项目依赖项：选择依赖于CEGUI_Sample_Comm项目)</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">CEGUIBase_d.lib</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">4、编译一下？调整工程属性可以选择从哪个项目启动。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">5、OK，我编译通过了。但是还是出了问题：运行时出现找不到 schemes。路径问题，解决方法是：将cegui/cegui_mk2/truck/datefile拷贝到CEGUI0.6.0SDK目录下，同时也拷贝到CEGUI_Sample_sln目录下。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">6、再运行一下看看？应该出来了吧。但是datefile的相对路径是可以更改的，</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在文件CEGuiBaseApplication.cpp中：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#ifndef CEGUI_SAMPLE_DATAPATH</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp; #define CEGUI_SAMPLE_DATAPATH "../datafile"</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">#endif</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">可以修改成你想要的任意路径，不过这样的话，你的datefile文件夹就又要挪位置了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">（今天3月3，按照家乡的习俗，要吃煮鸡蛋~）</p>
<hr style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 22px; PADDING-TOP: 0px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); LINE-HEIGHT: 22px; PADDING-TOP: 0px"></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">好了，现在终于把配置CEGUI弄完了。现在CEGUI使用环境，就跟使用普通SDK一样了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">这么大费周折是为了能对CEGUI进行修改，如果碰到某个控件或功能不满足项目需求，直接使用SDK的话，就没办法改原代码了。</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">最开始的时候不知道CEGUI是多项目工程。。把全部的CPP和H文件都导入到一个项目里。。。结果报133个错误，628个警告.....当时哭死了..囧囧囧</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">虽然最后我们看到了运行中的程序，但是我这样大锅饭似的设置是不正确的。因为CEGUI采用了许多模块，你可以根据项目需求来有选择性的进行裁减和组合。不过这个对于新手来说，还是太高深了，等我们进一步熟悉CEGUI的方方面面之后再来对它进行改造吧``</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 10px; COLOR: rgb(121,179,196); TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">不管怎么说，我们的实验环境总算是搭建完毕~<br><br><br><br><br><br><br><br>---------<br>虽然之前转载过这篇文章 不过由于是新的开始 所以还是转载过来了<br>原文地址：<a href="http://thatax.blog.163.com/blog/static/2089268020088271955675/"><u><font color=#0000ff>http://thatax.blog.163.com/blog/static/2089268020088271955675/</font></u></a></p>
</span></span></span></span>
<img src ="http://www.cppblog.com/alienbox/aggbug/97720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alienbox/" target="_blank">征</a> 2009-10-01 20:40 <a href="http://www.cppblog.com/alienbox/articles/97720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>