﻿<?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++博客-我风-随笔分类-ClanLib</title><link>http://www.cppblog.com/kyelin/category/14080.html</link><description>收集,记录,整理,回收</description><language>zh-cn</language><lastBuildDate>Tue, 27 Jul 2010 13:01:30 GMT</lastBuildDate><pubDate>Tue, 27 Jul 2010 13:01:30 GMT</pubDate><ttl>60</ttl><item><title>ClanLib Bmp</title><link>http://www.cppblog.com/kyelin/archive/2010/07/27/121405.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Tue, 27 Jul 2010 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/07/27/121405.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/121405.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/07/27/121405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/121405.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/121405.html</trackback:ping><description><![CDATA[ClanLib早些的版本倒有bmp支持,<br />但最新的2.0版本却没了.重新添加之.<br /><a href="/Files/kyelin/ClanLib_Bmp_Provider.rar">http://www.cppblog.com/Files/kyelin/ClanLib_Bmp_Provider.rar</a><img src ="http://www.cppblog.com/kyelin/aggbug/121405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-07-27 17:02 <a href="http://www.cppblog.com/kyelin/archive/2010/07/27/121405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Clanlib图片格式</title><link>http://www.cppblog.com/kyelin/archive/2010/07/07/119575.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Wed, 07 Jul 2010 05:18:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/07/07/119575.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/119575.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/07/07/119575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/119575.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/119575.html</trackback:ping><description><![CDATA[现主要支持png,jpg,jpeg.pcx,tga.<br />没找到bmp支持.<img src ="http://www.cppblog.com/kyelin/aggbug/119575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-07-07 13:18 <a href="http://www.cppblog.com/kyelin/archive/2010/07/07/119575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Clanlib中文支持</title><link>http://www.cppblog.com/kyelin/archive/2010/07/07/119574.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Wed, 07 Jul 2010 05:12:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/07/07/119574.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/119574.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/07/07/119574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/119574.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/119574.html</trackback:ping><description><![CDATA[Clanlib<br />中文显示:<br />在非unicode模式下如果想正常显示中文的话则需要修改CL_Font里面的文字绘制.<br /><br />中文输入,<br />Clanlib中的消息循环缺少TranslateMessage 所以会导致无wm_char消息,也就是说如果有其他的windows窗口(如CEdit)存在的话也无法输入了.更别提中文.<br />Clanlib的gui中只有一个CL_LineEdit只支持单行英文输入.<br />输入中文解决方案:<br />1).在消息派送前添加TranslateMessage <br />2).在消息处理函数中添加wm_char消息处理.<br />3).重写一个支持多行中文输入控件.<img src ="http://www.cppblog.com/kyelin/aggbug/119574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-07-07 13:12 <a href="http://www.cppblog.com/kyelin/archive/2010/07/07/119574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>窗口接入问题</title><link>http://www.cppblog.com/kyelin/archive/2010/07/02/119188.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Fri, 02 Jul 2010 09:45:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/07/02/119188.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/119188.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/07/02/119188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/119188.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/119188.html</trackback:ping><description><![CDATA[如果把clanlib加入到已有框架中.<br />CL_DisplayWindow 创建时会把CL_KeepAlive::func_event_wait自动设置CL_DisplayMessageQueue_Win32::wait,<br />而这个wait中则会获取并派发消息.<br />如果CL的窗口是一个window的子窗口,这样就会导致有两个地方会派发消息导致bug.<br /><br />解决方法:<br />1.<br />在创建好CL_DisplayWindow后调用<br />CL_KeepAlive::func_event_wait().clear();<br />当然这样CL_DisplayWindow窗口的消息就无法处理,要手工添加m_DisplayWnd.get_ic().process_messages()处理.<br /><br />2.<br />取消window的消息处理,直接使用Clanlib中的消息派发机制.<br />不过如果是mfc程序则会导致PreTransWindowsMsg消息无效.<br /><img src ="http://www.cppblog.com/kyelin/aggbug/119188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-07-02 17:45 <a href="http://www.cppblog.com/kyelin/archive/2010/07/02/119188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>注销</title><link>http://www.cppblog.com/kyelin/archive/2010/07/02/119171.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Fri, 02 Jul 2010 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/07/02/119171.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/119171.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/07/02/119171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/119171.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/119171.html</trackback:ping><description><![CDATA[ClanLib中成员的注销要确保先注销各界面部分成员和其他的GUI管理等之后才能注销SetupCore.<br />否则先注销SetupCore会导致其他元素注销时调用线程局部数据错误.<img src ="http://www.cppblog.com/kyelin/aggbug/119171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-07-02 15:20 <a href="http://www.cppblog.com/kyelin/archive/2010/07/02/119171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>消息流程</title><link>http://www.cppblog.com/kyelin/archive/2010/06/30/119000.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Wed, 30 Jun 2010 08:34:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/30/119000.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/119000.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/30/119000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/119000.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/119000.html</trackback:ping><description><![CDATA[每个CL_Win32Window创建时候都会相应的添加到CL_DisplayMessageQueue_Win32队列中(析构时删除).<br />CL_DisplayMessageQueue_Win32::process_message中会获取消息并派发消息.<br />而后遍历所有的窗口调用窗口对应的输入接口对象(CL_InputContext)进行处理.<br />CL_Win32Window在创建时设置了自己的消息处理函数static_window_proc,<br />处理函数在收到自己的消息时调用处理函数CL_Win32Window::window_proc进行处理.<br />window_proc根据不同的消息类型进行分流后加入CL_InputDevice的事件栈,等待程序调用CL_InputContext::process_messages进行处理.<br /><br />一个疑问:CL_InputContext_Impl中其他的函数都加了线程互斥,如处理函数process_messages,add_mouse等,只有函数received_event没有加,这样能支持多线程操作?<img src ="http://www.cppblog.com/kyelin/aggbug/119000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-30 16:34 <a href="http://www.cppblog.com/kyelin/archive/2010/06/30/119000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>clanlib启动及窗口创建</title><link>http://www.cppblog.com/kyelin/archive/2010/06/30/118986.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Wed, 30 Jun 2010 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/30/118986.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/118986.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/30/118986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/118986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/118986.html</trackback:ping><description><![CDATA[clanlib程序如果包含了ClanLib/application.h,那么要求必须实现一个全局的app以便从他提供的接口开始运行程序.<br />1.引擎首先要求初始化设置core,既要添加一个CL_SetupCore对象.<br />  该对象主要工作是创建线程本地存储.<br />2.初始化设置显示.CL_SetupDisplay.<br />   改初始化会注册各种程序支持的图片类型.<br />3.初始化设置显示对象.<br />   显示对象主要有GL,GL1,GDI三种.为同为一个接口CL_DisplayTarget派生而来.<br />4.设置窗口属性并创建窗口.<br />设置窗口属性用CL_DisplayWindowDescription,而后调用CL_DisplayWindow创建窗口.<br />创建窗口过程.<br />   1).获取到步骤3创建的显示对象与之绑定.<br />   2).初始化一个win32空窗口(CL_Win32Window).并添加到全局窗口消息队列中,<br />   3).通过显示对象创建窗口,获取并设置输入设备(鼠标,键盘等).<br /><br />至此窗口创建完成,而后开始消息处理,绘制和添加子控件等操作.<img src ="http://www.cppblog.com/kyelin/aggbug/118986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-30 15:20 <a href="http://www.cppblog.com/kyelin/archive/2010/06/30/118986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>控件基类CL_GUIComponent</title><link>http://www.cppblog.com/kyelin/archive/2010/06/29/118926.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Tue, 29 Jun 2010 08:16:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/29/118926.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/118926.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/29/118926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/118926.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/118926.html</trackback:ping><description><![CDATA[窗口基类:<span class="code">CL_GUIComponent<br /></span><span class="code">类似于mfc中的cwnd<br /></span>主要功能:<br />管理窗口属性.<br />维护窗口父子层关系.<br />基本消息处理<br /><br />///////////////////////////////////////////////////////////////////////////////////////数据部分///////////////////////////////////////////////////////////////////////////////////////////////////////<br />//窗口关系数<br /> CL_GUIComponent *component;         //自己<br /> CL_GUIComponent *parent;                 <br /> CL_GUIComponent *prev_sibling;         <br /> CL_GUIComponent *next_sibling;<br /> CL_GUIComponent *first_child;<br /> CL_GUIComponent *last_child;<br /><br /> CL_GUIComponent::FocusPolicy focus_policy;   //激活类型<br /> CL_GUILayout layout;                                        //layout(布局?)<br /><br />//属性<br /> CL_String type_name;     //类型名<br /> CL_String class_name;    //类名<br /> CL_String id_name;         //ID名<br /> bool allow_resize;            //是否允许拖动改变大小<br /> bool clip_children;            //是否裁剪子窗口<br /> bool enabled;<br /> bool visible;<br /> bool activated;<br /> bool click_through;         //字面意思应该是是否过滤鼠标点击<br /> CL_Rect geometry;         //窗口矩形<br /> mutable CL_String element_name;   //<br /> bool default_handler;         //缺省ok?<br /> bool cancel_handler;         //缺省取消?<br /> bool constant_repaint;      //<br /> bool blocks_default_action_when_focused;<br /> bool is_selected_in_group;<br /> CL_String group_name;<br /><br />然后是一系列的接口回调函数<br /> CL_Callback_v2&lt;CL_GraphicContext &amp;, const CL_Rect &amp;&gt; func_render;      //绘制<br /> CL_Callback_v1&lt;CL_GUIMessage &amp;&gt; func_process_message;   //消息处理<br /> CL_Callback_0&lt;bool&gt; func_close;//关闭<br /> CL_Callback_0&lt;bool&gt; func_activated;//激活<br /> CL_Callback_0&lt;bool&gt; func_deactivated;//激活解除<br /> CL_Callback_0&lt;bool&gt; func_focus_lost;//失去焦点<br /> CL_Callback_0&lt;bool&gt; func_focus_gained;//获得焦点<br /> CL_Callback_0&lt;bool&gt; func_pointer_enter;//光标进入<br /> CL_Callback_0&lt;bool&gt; func_pointer_exit;//光标离开<br /> CL_Callback_1&lt;bool, const CL_InputEvent &amp;&gt; func_input;//键盘输入<br /> CL_Callback_1&lt;bool, const CL_InputEvent &amp;&gt; func_input_pressed;//按键按下<br /> CL_Callback_1&lt;bool, const CL_InputEvent &amp;&gt; func_input_released;//按键放开<br /> CL_Callback_1&lt;bool, const CL_InputEvent &amp;&gt; func_input_doubleclick;//双击<br /> CL_Callback_1&lt;bool, const CL_InputEvent &amp;&gt; func_input_pointer_moved;//关闭移动<br /> CL_Callback_v0 func_style_changed;//风格改变<br /> CL_Callback_v0 func_enablemode_changed;//<br /> CL_Callback_v0 func_resized;//大小改变<br /> CL_Callback_v1&lt;CL_GUIMessage &amp;&gt; func_filter_message;//消息过滤<br /> CL_Callback_2&lt;CL_GUIComponent*, CL_GUIComponent*, CL_String&gt; func_create_custom_component;//定制窗口<br /> CL_Callback_v1&lt;bool&gt; func_visibility_change;//显示改变<br />//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br />//////////////////////////////////////////////////////////////////////////////////////函数////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br /><img src ="http://www.cppblog.com/kyelin/aggbug/118926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-29 16:16 <a href="http://www.cppblog.com/kyelin/archive/2010/06/29/118926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CL_Timer</title><link>http://www.cppblog.com/kyelin/archive/2010/06/21/118345.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Mon, 21 Jun 2010 02:26:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/21/118345.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/118345.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/21/118345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/118345.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/118345.html</trackback:ping><description><![CDATA[CL_Timer用法很简单.<br />但经测试设置时间最好不要小于16毫秒.<img src ="http://www.cppblog.com/kyelin/aggbug/118345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-21 10:26 <a href="http://www.cppblog.com/kyelin/archive/2010/06/21/118345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CL_XPathEvaluator::evaluate</title><link>http://www.cppblog.com/kyelin/archive/2010/06/21/118343.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Mon, 21 Jun 2010 02:03:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/21/118343.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/118343.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/21/118343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/118343.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/118343.html</trackback:ping><description><![CDATA[CL_XPathEvaluator::evaluate<br /><br />源码中例子<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">        CL_File file(cl_text(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.xml</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">), CL_File::open_existing, CL_File::access_read);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />        CL_DomDocument document;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />        document.load(file);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />        CL_XPathEvaluator evaluator;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("6 mod 4", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("/root/child/childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("/child::root/child::child/child::childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("child::root/child::child/child::childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("child::root/child::child[@foo]/child::childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("child::root/child::child[child::foobar]/child::childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("child::root/child::child[2]/child::childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/child[@foo]/childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/child[@foo=\"barism\"]/childchild", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/child[childchild=\"Test6\"]/foobar", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/child[@age!=10]/foobar", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/child[@age&gt;27]/foobar", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">        CL_XPathObject result = evaluator.evaluate("root/com:child/foobar", document);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><br />支持2元运算符的+-*/算法和mod,div(/),and,or,=,!=,&gt;,&gt;=,&lt;,&lt;=等.<br />xml路径中通过[]来附加条件,带@符号为属性项.属性项条件判断中不支持&gt;,&lt;,&gt;=,&lt;=.当支持=,!=.<br /><img src ="http://www.cppblog.com/kyelin/aggbug/118343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-21 10:03 <a href="http://www.cppblog.com/kyelin/archive/2010/06/21/118343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ClanLib智能指针</title><link>http://www.cppblog.com/kyelin/archive/2010/06/20/118298.html</link><dc:creator>我风</dc:creator><author>我风</author><pubDate>Sun, 20 Jun 2010 04:50:00 GMT</pubDate><guid>http://www.cppblog.com/kyelin/archive/2010/06/20/118298.html</guid><wfw:comment>http://www.cppblog.com/kyelin/comments/118298.html</wfw:comment><comments>http://www.cppblog.com/kyelin/archive/2010/06/20/118298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kyelin/comments/commentRss/118298.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kyelin/services/trackbacks/118298.html</trackback:ping><description><![CDATA[CL_SharedPtr&lt;MyClass&gt; ptrMy(new MyClass);<br />CL_SharedPtr&lt;MyClass&gt; ptr_a(ptrMy);<br />CL_SharedPtr&lt;MyClass&gt; ptr_b = ptr_a;<br />以上3给指针则指向同一对象,除非所有指针都disconnect,否则对象不会销毁.<br /><br />CL_SharedPtr&lt;MyClass&gt; ptrMy(new MyClass);<br />CL_WeakPtr&lt;MyClass&gt;ptr_wa(ptrMy);<br />CL_WeakPtr&lt;MyClass&gt;ptr_wb = ptr_wa;<br />如果ptrMy调用disconnect则会直接销毁对象,ptr_wa和ptr_wb为is_null;<br /><img src ="http://www.cppblog.com/kyelin/aggbug/118298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kyelin/" target="_blank">我风</a> 2010-06-20 12:50 <a href="http://www.cppblog.com/kyelin/archive/2010/06/20/118298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>