﻿<?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++博客-Codejie's C++ Space-随笔分类-C++</title><link>http://www.cppblog.com/codejie/category/9774.html</link><description>Using C++</description><language>zh-cn</language><lastBuildDate>Thu, 29 Jan 2015 13:33:36 GMT</lastBuildDate><pubDate>Thu, 29 Jan 2015 13:33:36 GMT</pubDate><ttl>60</ttl><item><title>C++: c++ wrap for libpq</title><link>http://www.cppblog.com/codejie/archive/2015/01/10/209453.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 09 Jan 2015 16:49:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/01/10/209453.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/209453.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/01/10/209453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/209453.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/209453.html</trackback:ping><description><![CDATA[<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">class</span>&nbsp;DBConnection<br />{<br /><span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TParams<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TParams(<span style="color: #0000FF; ">int</span>&nbsp;size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;~TParams();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TParams(<span style="color: #0000FF; ">const</span>&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>)&nbsp;{}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;=&nbsp;(<span style="color: #0000FF; ">const</span>&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>)&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;*<span style="color: #0000FF; ">this</span>;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Add(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;val,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Add(<span style="color: #0000FF; ">int</span>&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Add(unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Add(uint64_t&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Add(<span style="color: #0000FF; ">short</span>&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Free();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Size()&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;_size;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;*&nbsp;Value()&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;value;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;Length()&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;length;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;Format()&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;format;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>**&nbsp;value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;length;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;format;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;_size;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;_pos;<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br /><span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;DBConnection()<br />&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;conn(NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;~DBConnection();<br /><span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Connect(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;info);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Disconnect();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ExecCmd(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;cmd);<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;ExecQuery(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ExecCmdWithParams(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;cmd,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;ExecQueryWithParams(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;sql,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;BeginTranscation();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;EndTranscation();<br /><span style="color: #0000FF; ">private</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;PGconn*&nbsp;conn;<br />};</div><br /><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->DBConnection::TParams::TParams(<span style="color: #0000FF; ">int</span>&nbsp;size)<br />:&nbsp;_size(size),&nbsp;_pos(0)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">char</span>*[_size];<br />&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[_size];<br />&nbsp;&nbsp;&nbsp;&nbsp;format&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[_size];<br />}<br /><br />DBConnection::TParams::~TParams()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Free();<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Free()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(_size&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;_size;&nbsp;++&nbsp;i)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(format[i]&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete[]&nbsp;value[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(length[i]&nbsp;==&nbsp;<span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">int</span>)&nbsp;||&nbsp;length[i]&nbsp;==&nbsp;<span style="color: #0000FF; ">sizeof</span>(unsigned&nbsp;<span style="color: #0000FF; ">int</span>))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;(<span style="color: #0000FF; ">int</span>*)value[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(length[i]&nbsp;==&nbsp;<span style="color: #0000FF; ">sizeof</span>(uint64_t))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;(uint64_t*)value[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;(<span style="color: #0000FF; ">short</span>*)value[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;delete[]&nbsp;value,&nbsp;value&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;delete[]&nbsp;length,&nbsp;length&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;delete[]&nbsp;format,&nbsp;format&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;_size&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::TParams::Free()&gt;"&lt;&lt;&nbsp;std::endl);<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Add(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;val,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;char_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">char</span>[size&nbsp;+&nbsp;1];<br />&nbsp;&nbsp;&nbsp;&nbsp;char_val[size]&nbsp;=&nbsp;'\0';<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;char*&nbsp;char_val&nbsp;=&nbsp;new&nbsp;char[size];</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(char_val,&nbsp;val,&nbsp;size);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;value[_pos]&nbsp;=&nbsp;char_val;<br />&nbsp;&nbsp;&nbsp;&nbsp;length[_pos]&nbsp;=&nbsp;size&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;format[_pos]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;_pos;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Add(<span style="color: #0000FF; ">int</span>&nbsp;val)<br />{<br />#ifdef&nbsp;__OS_MAC__<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(<span style="color: #0000FF; ">int</span>)(val);<br /><span style="color: #0000FF; ">#else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(<span style="color: #0000FF; ">int</span>)(htonl(val));<br /><span style="color: #0000FF; ">#endif</span><br />&nbsp;&nbsp;&nbsp;&nbsp;value[_pos]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>*)(int_val);<br />&nbsp;&nbsp;&nbsp;&nbsp;length[_pos]&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">int</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;format[_pos]&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;_pos;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Add(unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;val)<br />{<br />#ifdef&nbsp;__OS_MAC__<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>)(val);<br /><span style="color: #0000FF; ">#else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>)(htonl(val));<br /><span style="color: #0000FF; ">#endif</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;value[_pos]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>*)(int_val);<br />&nbsp;&nbsp;&nbsp;&nbsp;length[_pos]&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">int</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;format[_pos]&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;_pos;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Add(uint64_t&nbsp;val)<br />{<br />#ifdef&nbsp;__OS_MAC__<br />&nbsp;&nbsp;&nbsp;&nbsp;uint64_t*&nbsp;uint64_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;uint64_t(val);<br /><span style="color: #0000FF; ">#else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;uint64_t*&nbsp;uint64_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;uint64_t(htobe64(val));<br /><span style="color: #0000FF; ">#endif</span><br />&nbsp;&nbsp;&nbsp;&nbsp;value[_pos]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>*)(uint64_val);<br />&nbsp;&nbsp;&nbsp;&nbsp;length[_pos]&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(uint64_t);<br />&nbsp;&nbsp;&nbsp;&nbsp;format[_pos]&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;_pos;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::TParams::Add(<span style="color: #0000FF; ">short</span>&nbsp;val)<br />{<br />#ifdef&nbsp;__OS_MAC__<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">short</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(<span style="color: #0000FF; ">short</span>)(val);<br /><span style="color: #0000FF; ">#else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">short</span>*&nbsp;int_val&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;(<span style="color: #0000FF; ">short</span>)(htons(val));<br /><span style="color: #0000FF; ">#endif</span><br />&nbsp;&nbsp;&nbsp;&nbsp;value[_pos]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>*)(int_val);<br />&nbsp;&nbsp;&nbsp;&nbsp;length[_pos]&nbsp;=&nbsp;<span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">short</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;format[_pos]&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;_pos;<br />}<br /><br /><span style="color: #808080; ">///</span><span style="color: #008000; ">/</span><span style="color: #808080; "><br /></span><br />DBConnection::~DBConnection()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Disconnect();<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;DBConnection::Connect(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;info)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;PQconnectdb(info);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(PQstatus(conn)&nbsp;!=&nbsp;CONNECTION_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"PQ&nbsp;connection&nbsp;failed.");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQfinish(conn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;DBConnection::Disconnect()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(conn&nbsp;!=&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQfinish(conn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;DBConnection::ExecCmd(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;cmd)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;res&nbsp;=&nbsp;PQexec(conn,&nbsp;cmd);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(PQresultStatus(res)&nbsp;!=&nbsp;PGRES_COMMAND_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::ExecCmd&gt;&nbsp;failed&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;cmd&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"DBConnection::ExecCmd&gt;&nbsp;error&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;PQerrorMessage(conn)&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ret&nbsp;=&nbsp;ntohl(*PQcmdTuples(res));</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ret&nbsp;=&nbsp;*PQcmdTuples(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br />}<br /><br />PGresult*&nbsp;DBConnection::ExecQuery(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;sql)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;res&nbsp;=&nbsp;PQexec(conn,&nbsp;sql);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(PQresultStatus(res)&nbsp;!=&nbsp;PGRES_TUPLES_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::ExecQuery&gt;&nbsp;failed&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;sql&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"DBConnection::ExecQuery&gt;&nbsp;error&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;PQerrorMessage(conn)&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;res;<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;DBConnection::ExecCmdWithParams(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;cmd,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;DBConnection::TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;res&nbsp;=&nbsp;PQexecParams(conn,&nbsp;cmd,&nbsp;<span style="color: #0000FF; ">params</span>.Size(),&nbsp;NULL,&nbsp;<span style="color: #0000FF; ">params</span>.Value(),&nbsp;<span style="color: #0000FF; ">params</span>.Length(),&nbsp;<span style="color: #0000FF; ">params</span>.Format(),&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(PQresultStatus(res)&nbsp;!=&nbsp;PGRES_COMMAND_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::ExecCmdWithParams&gt;&nbsp;failed&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;cmd&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"DBConnection::ExecCmdWithParams&gt;&nbsp;error&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;PQerrorMessage(conn)&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ret&nbsp;=&nbsp;ntohl(*PQcmdTuples(res));</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ret&nbsp;=&nbsp;*PQcmdTuples(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::ExecCmdWithParams&gt;&nbsp;succ&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;cmd&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;</span><span style="color: #008000; "><br /></span>}<br /><br />PGresult*&nbsp;DBConnection::ExecQueryWithParams(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;sql,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;TParams&amp;&nbsp;<span style="color: #0000FF; ">params</span>)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PGresult*&nbsp;res&nbsp;=&nbsp;PQexecParams(conn,&nbsp;sql,&nbsp;<span style="color: #0000FF; ">params</span>.Size(),&nbsp;NULL,&nbsp;<span style="color: #0000FF; ">params</span>.Value(),&nbsp;<span style="color: #0000FF; ">params</span>.Length(),&nbsp;<span style="color: #0000FF; ">params</span>.Format(),&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(PQresultStatus(res)&nbsp;!=&nbsp;PGRES_TUPLES_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"&lt;DBConnection::ExecQueryWithParams&gt;&nbsp;failed&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;sql&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUG(DEBUG_ANY,&nbsp;"DBConnection::ExecQueryWithParams&gt;&nbsp;error&nbsp;-&nbsp;"&nbsp;&lt;&lt;&nbsp;PQerrorMessage(conn)&nbsp;&lt;&lt;&nbsp;std::endl);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PQclear(res);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;res;<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;DBConnection::BeginTranscation()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ExecCmd("BEGIN");<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;DBConnection::EndTranscation()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ExecCmd("END");<br />}</div><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/209453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2015-01-10 00:49 <a href="http://www.cppblog.com/codejie/archive/2015/01/10/209453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Why the inline function can not be covered?</title><link>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 21 Sep 2012 09:45:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/191508.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/191508.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/191508.html</trackback:ping><description><![CDATA[<br /><div>Please have a look the following codes, they include two source files (source.h, source.c), one test file (test_source.c) and one makefile file.</div><div><br />//source.h<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#ifndef&nbsp;__SOURCE_H__<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__SOURCE_H__<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;#include&nbsp;&lt;stdio.h&gt;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;inline_test()<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nthis&nbsp;is&nbsp;the&nbsp;inline&nbsp;function.");<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;}<br /><span style="color: #008080; ">10</span>&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;normal_test();<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">#endif</span></div><br />//source.c<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;#include&nbsp;"source.h"<br /><span style="color: #008080; ">2</span>&nbsp;<br /><span style="color: #008080; ">3</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;normal_test()<br /><span style="color: #008080; ">4</span>&nbsp;{<br /><span style="color: #008080; ">5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nThis&nbsp;is&nbsp;a&nbsp;normal&nbsp;function.");<br /><span style="color: #008080; ">6</span>&nbsp;}</div><br />//test_source.c<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;"source.h"<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;test_inline()&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inline_test();<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;test_normal()<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;normal_test();<br /><span style="color: #008080; ">11</span>&nbsp;}<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()<br /><span style="color: #008080; ">14</span>&nbsp;{<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_inline();<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_normal();<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">19</span>&nbsp;}</div><br /><br />//makefile<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;TEST&nbsp;=&nbsp;test_source.o<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;TARGET&nbsp;=&nbsp;a.exe<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;all:&nbsp;$(TARGET)<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;$(TARGET):$(SOURCE)&nbsp;$(TEST)<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-Xlinker&nbsp;--allow-multiple-definition&nbsp;$^&nbsp;-fprofile-arcs&nbsp;-ftest-coverage&nbsp;-o&nbsp;$(TARGET)&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;$(SOURCE):&nbsp;%.o:%.c<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;-fprofile-arcs&nbsp;-ftest-coverage<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;$(TEST):&nbsp;%.o:%.c<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp; &nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;<br /><font color="#008080">18</font>&nbsp;clean:<br /><font color="#008080">19</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-rm&nbsp;-rf&nbsp;$(DIR_COVERAGE)<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-rm&nbsp;-rf&nbsp;*.d&nbsp;*.o&nbsp;*.gcda&nbsp;*.gcno&nbsp;$(TARGET)<br /><br />...</div><br />My purpose is that get the UT line coverage report of source files by running the test file. I guess I should get the below report of line coverage, because I have called every functions of source file in test file, include the inline function and the normal function.</div><div><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/inline.png" border="0" alt="" width="720" height="488" /></div><div>But after run test file, I got the report is just 50%, the inline function has not been covered. Why? Why it is not be covered? I am sure it is called in test file.</div><div><img src="http://www.cppblog.com/images/cppblog_com/codejie/inline3.png" border="0" alt="" width="733" height="307" /></div><div></div><div>OK, Calming down. If it is not covered, there are two reason, one is that the inline function is not be called, of course it is impossible, because we did it. So the root cause must be the second one that gcov/lcov tools do not process those lines of inline function. Have any idea? gcov/lcov tools process all files with compilation parameters '-fprofile-arcs -ftest-coverage', so let's check makefile file again.</div><div>Look here, source files have the compilation paraments, but why normal function has been coverage, but inline function not?</div><div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(SOURCE):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;-fprofile-arcs&nbsp;-ftest-coverage</div></div><div><br />Thinking again, as we knew, the difference between inline function and normal function is just that inline function will be inserted source code while compiling period. Yes, the answer is here! While compiling, the inline function is put into test file, but the test file has not '-fprofile-arcs -ftest-coverage' paramenter. So, so it was not covered.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(TEST):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@</div></div><div></div><div><br />To fix it, just add the parameter to test file while compiling. OK, let's update the makefile file like the below line.</div><div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(TEST):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;<strong>-fprofile-arcs&nbsp;-ftest-coverage</strong> &nbsp; &nbsp;</div></div><div></div><div><br />Done, enjoy it!</div><img src ="http://www.cppblog.com/codejie/aggbug/191508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-09-21 17:45 <a href="http://www.cppblog.com/codejie/archive/2012/09/21/191508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Development Environment Setup</title><link>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 30 Mar 2012 08:16:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/169536.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/169536.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/169536.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 上周本本重装成了Win7，我也兴冲冲地安装了VCExpress2010和wxWidgets2.9，悲剧的是LingosHook竟然在此环境下编译失败。。。<br />&nbsp; &nbsp; 都是版本兼容错误，我也懒得改了，于是速度恢复了原来的环境，一切OK。。。顺便记录下，有兴趣的可以看看。。。<br /><br />&nbsp; &nbsp; 1. VC Express 2008；<br />&nbsp; &nbsp; 2. atlmfc sdk；<br />&nbsp; &nbsp; 3. wxWidgets 2.8.10；<br />&nbsp; &nbsp; 4. wsSQLite3 1.9.7；<br /><br />&nbsp; &nbsp; 嗯，很简单，安装好了这些，编译个LingosHook，那是一个easy啊。。。<br /><br />&lt;---- 回档的分割线 ----&gt;<br />&nbsp; &nbsp; cppblog.com敢再稳定点不。。。写好的帖子可以重写，回复的评论真的忘记了。。。。<img src ="http://www.cppblog.com/codejie/aggbug/169536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-03-30 16:16 <a href="http://www.cppblog.com/codejie/archive/2012/03/30/169536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : HTML Data in Android Client</title><link>http://www.cppblog.com/codejie/archive/2012/01/06/163732.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 06 Jan 2012 08:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/01/06/163732.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/163732.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/01/06/163732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/163732.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/163732.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 归功于对TinyHtmlParser的优化，目前可以在Android Client上显示跟LingosHook几乎一样的结果了(你不关注图片，你不关注图片。。。）&nbsp; &nbsp; 经过CDocumentOuputObject过滤后的HTML数据，被去除了相对无用的IMG，PARAM以及event等内容，使得数据尺寸减少了至少一半以上。这种处理应该符合Android设备的对数据的需求－－小而轻。<br /><br />&nbsp; &nbsp; 现在，你觉得下图如何？<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lhac_result..png" border="0" alt="" width="483" height="798" /><br /><br /><br />&lt;!---- 什么是LingosHook Android Cllient分割线 ----&gt;<br /><br />&nbsp; &nbsp; <a title="LingosHook" href="www.cppblog.com/codejie">LingosHook</a> Android Client主体已经写好，目前纠结于功能上的细节问题，比如，如何设置&#8221;记忆数据&#8221;，哪些参数可以配置等等。有时纠结会变成一种逃避不干的借口。。。<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 总体来说，LingosHook Android Client被设计成一个主要用于记忆的应用，简单说就是一个背单词的程序。其出发点在于我曾经提到的－－对于单词，<strong>记录只是手段，记住才是目的</strong>。目前其可以支持直接来自LingosHook中的数据（将同时提供一个LingosHook插件来实现此功能），以后可能支持用户自定义数据的导入，当然这都是后话。<br /><br />&nbsp; &nbsp; 另外，对此应用有想法的&#8220;上帝&#8221;们，赶紧发飙吧！<img src ="http://www.cppblog.com/codejie/aggbug/163732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-01-06 16:53 <a href="http://www.cppblog.com/codejie/archive/2012/01/06/163732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook: CDocumentOutputObject</title><link>http://www.cppblog.com/codejie/archive/2012/01/05/163618.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 05 Jan 2012 03:36:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/01/05/163618.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/163618.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/01/05/163618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/163618.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/163618.html</trackback:ping><description><![CDATA[<br />&nbsp;&nbsp;&nbsp; TinyHtmlParser更新完成，为了方便分解HTML，又新增了一个元素类型－－ET_VALUE。此类型将HTML的TAG和其VALUE分离开，使得VALUE成为独立的元素。当然，为了保持原有的代码不改动，在分解HTML数据时，是否将VALUE作为单独元素处理是可以选择的。<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Load(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;std::wstring</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;str,&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;strict&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;valueseparate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div><br /><br />&nbsp;&nbsp;&nbsp; 实际TinyHtmlParser最早就是这个样子的，只是后来为了让TAG跟VALUE有所关联，才将VALUE放置到TAG对象内部的。唉，写代码有时也很纠结的。。。<br /><br />&nbsp;&nbsp;&nbsp; 这次主要说明下的是新增的CDocumentOutputObject类。此类用于输出HTML分解后的CDocumentObject中的数据，而且是非常灵活的输出。比如，可以指定某些或者全部TAG、VALUE或者ATTRIB不输出。<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CDocumentOutputObject<br /><img id="Codehighlighter1_28_1349_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_1349_Open_Text.style.display='none'; Codehighlighter1_28_1349_Closed_Image.style.display='inline'; Codehighlighter1_28_1349_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_28_1349_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_28_1349_Closed_Text.style.display='none'; Codehighlighter1_28_1349_Open_Image.style.display='inline'; Codehighlighter1_28_1349_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_28_1349_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_28_1349_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">protected</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::</span><span style="color: #0000ff">set</span><span style="color: #000000">&lt;</span><span style="color: #000000">std::wstring</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;TKeySet;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::stack</span><span style="color: #000000">&lt;</span><span style="color: #000000">std::wstring</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;TTagStack;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img id="Codehighlighter1_158_233_Open_Image" onclick="this.style.display='none'; Codehighlighter1_158_233_Open_Text.style.display='none'; Codehighlighter1_158_233_Closed_Image.style.display='inline'; Codehighlighter1_158_233_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_158_233_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_158_233_Closed_Text.style.display='none'; Codehighlighter1_158_233_Open_Image.style.display='inline'; Codehighlighter1_158_233_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;KeyType&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_158_233_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_158_233_Open_Text"><span style="color: #000000">{&nbsp;KT_TAG&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;KT_VALUE,&nbsp;KT_ATTRIB,&nbsp;KT_ALL_TAG,&nbsp;KT_ALL_VALUE,&nbsp;KT_ALL_ATTRIB&nbsp;}</span></span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::map</span><span style="color: #000000">&lt;</span><span style="color: #000000">KeyType,&nbsp;TKeySet</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;TKeyMap;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;AddKey(TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;keymap,&nbsp;KeyType&nbsp;type,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wxEmptyString);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RemoveKey(TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;keymap,&nbsp;KeyType&nbsp;type,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wxEmptyString);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;IsKey(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;keymap,&nbsp;KeyType&nbsp;type,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;str);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Rewrite(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CDocumentObject</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;doc,&nbsp;wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NULL);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">protected</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RewriteElement(wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TinyHtmlParser::CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;root,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;e,&nbsp;TTagStack</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;tagstack,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;IsKey(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;keymap,&nbsp;KeyType&nbsp;type,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;std::wstring</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;str);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RewriteTag(wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;e,&nbsp;TTagStack</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;tagstack,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RewriteTagEnd(wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;e,&nbsp;TTagStack</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;tagstack,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RewriteAttrib(wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;e,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RewriteValue(wxString</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ostr,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;CElementObject</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;e,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;TKeyMap</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;exclude);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">;</span></div><br />&nbsp;&nbsp;&nbsp; 当所有的TAG不输出时，是不是我们就可以得到HTML中的存TEXT数据了？<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;ret;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::TKeyMap&nbsp;exclude;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">CDocumentOutputObject::AddKey(&amp;exclude,&nbsp;CDocumentOutputObject::KT_TAG,&nbsp;wxT("IMG"));</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(</span><span style="color: #000000">&amp;</span><span style="color: #000000">exclude,&nbsp;CDocumentOutputObject::KT_ALL_TAG);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">CDocumentOutputObject::AddKey(&amp;exclude,&nbsp;CDocumentOutputObject::KT_ALL_VALUE);</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(</span><span style="color: #000000">&amp;</span><span style="color: #000000">exclude,&nbsp;CDocumentOutputObject::KT_ALL_ATTRIB);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::Rewrite(doc,&nbsp;ret,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">exclude);</span></div><br /><br />&nbsp;&nbsp;&nbsp; 哈哈。。。有时我觉得我真的很强力啊。。。(低调，低调。。。哈哈。。。)<img src ="http://www.cppblog.com/codejie/aggbug/163618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-01-05 11:36 <a href="http://www.cppblog.com/codejie/archive/2012/01/05/163618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Optimize TinyHtmlParser Class</title><link>http://www.cppblog.com/codejie/archive/2011/12/29/163129.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 29 Dec 2011 10:13:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/12/29/163129.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/163129.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/12/29/163129.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/163129.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/163129.html</trackback:ping><description><![CDATA[<br />&nbsp;&nbsp;&nbsp; 为了支持LingosHook Android Client，今天优化了我的HTML解析类－－TinyHtmlParser。长时间没看LingosHook代码，都不认识了，分析了很久才明白其工作原理，汗啊，这曾经可是自己写的啊。。。<br />&nbsp;&nbsp;&nbsp; 这次增加了一个新的分解过程中类型 －－&nbsp; DT_END_SPECIAL，用于指点类似&lt;META .../&gt;的元素，真没想到，以前竟然不支持这个，如果元素是以'/'结尾的话，只能放到DT_SPECIAL列表中，这方法太无聊了。。。<br />&nbsp;&nbsp;&nbsp; 还有，这次增加了输出功能，分解后的数据可以再合成一个HTML串了。这样极大地方便了定制输出，以后提取指定数据要准确和灵活很多了。（哈哈，可以增加真正的数据导出功能了。。。）<br /><br />&nbsp;&nbsp;&nbsp; 就这些，TinyHtmlParser在类似'&lt;A&gt;[&lt;B&gt;123&lt;/B&gt;]&lt;/A&gt;'的处理上还不够灵活，导致输出时有些走样，还有再改改。另外，输出函数直接放到TinyHtmlParser类中有些勉强，还是单独弄个Ouput类来处理比较，比较好看。<br /><br /><br />&lt;---- 就是分割线 ----&gt;<br /><br />&nbsp;&nbsp;&nbsp; 喜欢看代码的，请帮忙检查这里&nbsp;<a href="http://code.google.com/p/lingoshook/source/browse/branches/1.4.000/LingosHookApp/TinyHtmlParser.h">TinyHtmlParser.h</a> 和 <a href="http://code.google.com/p/lingoshook/source/browse/branches/1.4.000/LingosHookApp/TinyHtmlParser.cpp">TinyHtmlParser.cpp </a>，辛苦了。<img src ="http://www.cppblog.com/codejie/aggbug/163129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-12-29 18:13 <a href="http://www.cppblog.com/codejie/archive/2011/12/29/163129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OCI : do NOT debug on TWO different windows</title><link>http://www.cppblog.com/codejie/archive/2011/07/08/150448.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 08 Jul 2011 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/07/08/150448.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/150448.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/07/08/150448.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/150448.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/150448.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; 这两天在使用Oracle，好久没用了，生疏了很多。。。&nbsp;&nbsp;&nbsp; 开始使用occi访问，可以是代码很精简，因为occi封装的还是很好的，使用起来跟mysql++很类似，也不知道他们谁参考谁的，反正用起来就是很简单。&nbsp;&nbsp;&nbsp; 联调起来却碰到了个大麻烦，本来说好是Linux平台的，等调试时却要换到Win...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2011/07/08/150448.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/150448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-07-08 11:23 <a href="http://www.cppblog.com/codejie/archive/2011/07/08/150448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Lingoes生词本第二十五版</title><link>http://www.cppblog.com/codejie/archive/2011/05/31/147769.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 31 May 2011 15:36:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/05/31/147769.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/147769.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/05/31/147769.html#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/147769.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/147769.html</trackback:ping><description><![CDATA[<br />&nbsp;&nbsp;&nbsp; LingosHook第二十五版(v1.4.061)实际早都写好了，只是这段时间在琢磨一个GAME引擎库，忙得&#8220;乐不思蜀&#8221;，一直没有做测试（当然了，找个Win7环境还真的真的不容易，我那可怜的AMD啊。。。）。<br />&nbsp;&nbsp;&nbsp; 现在恰逢这样一个重要的节日，赶紧发布吧。。。啥节日？六一啊，这还不重要吗？我们家终于又可以过这个重要的节日了。。。<br /><br />&nbsp;&nbsp;&nbsp; 第二十五版主要修正了另一个&#8220;最常见&#8221;的－－Win7下的黑方块以及&#8216;空索引&#8217;两个问题。。。 请这里<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">下载</a>，<a href="http://code.google.com/p/lingoshook/">源码在这里</a>。<br /><br /><br /><br />&lt;---坦白的分割线---&gt;<br /><br />&nbsp;&nbsp;&nbsp; 这个版本发布后，应该一段时间能不会有新版本了，不好意思啊，移情别恋了－－Android程序也很好玩。。。<br />&nbsp;&nbsp;&nbsp; 所以啊，可以很长时间不用点击&#8220;Welcome to online help&#8221;检查新版本了，（话说LingosHook似乎从来就没有Help文档。。。）有时间啊，多点击点击&#8220;Please DONATE to <a title="LingosHook" href="www.cppblog.com/codejie">LingosHook</a>&#8221;按钮啊。。。谢谢了。。。<br /><br />&nbsp;&nbsp;&nbsp; （说到检查新版本，实际前段时间还真写了个插件专门用于这个功能的，不信去看源码，<a href="http://code.google.com/p/lingoshook/source/browse/syscheck/Version.xml">检查文件</a>都准备好了。。。只是后来发现gdx也蛮好玩的，就不了了之了。。。）<br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/147769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-05-31 23:36 <a href="http://www.cppblog.com/codejie/archive/2011/05/31/147769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：1.4.000 and gettext</title><link>http://www.cppblog.com/codejie/archive/2011/03/19/142149.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sat, 19 Mar 2011 14:15:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/03/19/142149.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/142149.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/03/19/142149.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/142149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/142149.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 看，下面是什么？！<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_chinese_if.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 不认识了吧？就是LingosHook，全中文的LingosHook！<br><br>&nbsp;&nbsp;&nbsp; 一直想着写个中文版的LingosHook，但一想到要维护中、英文两个版本就有点怕，所以一直没有去做。这次下决心做的时候，才发现实际wxWidget最i18n支持的很好的。。。<br><br>&nbsp;&nbsp;&nbsp; 先说wxWidget，其支持通过gettext工具制作语言包的，并直接提供了字符串宏来自动处理：<br>&nbsp;&nbsp;&nbsp; 1. wxLocale类负责语言的管理工作，如设置当前语言、指定语言包位置等；<br>&nbsp;&nbsp;&nbsp; 2. _()宏，将根据当前设置语言的不同，自动读取语言包，处理语言转换；<br>&nbsp;&nbsp;&nbsp; 3. _T()、wxT()宏则跟_()宏相对应，其中的字符串不会因为语言不同而转换，可用于需要转换的地方，如SQL语句等；<br>&nbsp;&nbsp;&nbsp; 4. 这三个就够了。。<br><br>&nbsp;&nbsp;&nbsp; 再说gettext，这个刚用，不熟悉，简单说下：<br>&nbsp;&nbsp;&nbsp; 1. 下载gettext-tools-0.17和gettext-runtime-0.17，这里下载<a href="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/"><u><font color=#0000ff>http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/</font></u></a><br>&nbsp;&nbsp;&nbsp; 2. 通过./bin目录下的xgettext自动提取代码中的字符串；<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">xgettext&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">a&nbsp;.</span><span style="COLOR: #000000">\</span><span style="COLOR: #000000">LingosHookApp</span><span style="COLOR: #000000">\*</span><span style="COLOR: #000000">.cpp&nbsp;.</span><span style="COLOR: #000000">\</span><span style="COLOR: #000000">LingosHookApp</span><span style="COLOR: #000000">\*</span><span style="COLOR: #000000">.h&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;lang.po</span></div>
&nbsp;&nbsp;&nbsp; 3. 编辑输出.po文件，就是翻译了；<br>&nbsp;&nbsp;&nbsp; 4. 使用msgfmt编译.po文件到.mo文件；<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">msgfmt&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;lang.mo&nbsp;lang.po</span></div>
&nbsp;&nbsp;&nbsp; 5. 将.mo放到指定目录就好了。<br><br>&nbsp;&nbsp;&nbsp; 简单吧，这里多说下编辑.po文件是的经验，只做了中文的转换，其它应该类似吧。。<br>&nbsp;&nbsp;&nbsp; 1.&nbsp;先将.po中的CHARSET改为UTF-8；<br>&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;使用编辑工具设置编码为UTF-8，然后再翻译；(我使用的是Notepad++，对付这个很好用)<br>&nbsp;&nbsp;&nbsp; 3.&nbsp;翻译好后，将编码转换回ASCII，原因是如果直接用msgfmt处理UTF-8的文档会有错误的；<br>&nbsp;&nbsp;&nbsp; 4. 就好了。<br><br><br>&nbsp;&nbsp;&nbsp; 真的很简单，有兴趣的下载个<a href="http://code.google.com/p/lingoshook/">lang.po</a>，根据自己的需要翻译好，然后发给我，LingosHook就可以再支持一种语言界面了。。。。<br><br><br><br>&lt;----&nbsp;要失望的分割线----&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;嗯，1.4.000版本就是支持中文了。。。要新增什么功能还没有计划好。。。<br>&nbsp;&nbsp;&nbsp;<img src ="http://www.cppblog.com/codejie/aggbug/142149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-03-19 22:15 <a href="http://www.cppblog.com/codejie/archive/2011/03/19/142149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxWidget：Catch KEY event of wxStaticBitmap.</title><link>http://www.cppblog.com/codejie/archive/2011/02/18/140283.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 18 Feb 2011 09:48:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/02/18/140283.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/140283.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/02/18/140283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/140283.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/140283.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; wxStaticBitmap用于显示一张图片，很好用，但若想截取其键盘事件，确实件麻烦事情。<br>&nbsp;&nbsp;&nbsp; 尝试了几次，就是抓不到，忽然想起一般这样&#8220;简单&#8221;的控件是无法设定&#8220;焦点&#8221;的，即无法调用其类似"setFocus()"函数的。于是翻其基类，果然。。。<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 id=Codehighlighter1_38_54_Open_Image onclick="this.style.display='none'; Codehighlighter1_38_54_Open_Text.style.display='none'; Codehighlighter1_38_54_Closed_Image.style.display='inline'; Codehighlighter1_38_54_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_38_54_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_38_54_Closed_Text.style.display='none'; Codehighlighter1_38_54_Open_Image.style.display='inline'; Codehighlighter1_38_54_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;AcceptsFocus()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_38_54_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_38_54_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>&nbsp;&nbsp;&nbsp; 这里将false改为true就OK了。<br><br>&nbsp;&nbsp;&nbsp; 下面是个简单的测试例子，自定义StaticBitmap控件对象。<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: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyStaticBitmap&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;wxStaticBitmap<br><img id=Codehighlighter1_45_704_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_704_Open_Text.style.display='none'; Codehighlighter1_45_704_Closed_Image.style.display='inline'; Codehighlighter1_45_704_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_45_704_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_704_Closed_Text.style.display='none'; Codehighlighter1_45_704_Open_Image.style.display='inline'; Codehighlighter1_45_704_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_45_704_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_45_704_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MyStaticBitmap(wxWindow&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">parent,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxWindowID&nbsp;id,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxGDIImage</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;label,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxPoint</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;pos&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wxDefaultPosition,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxSize</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wxDefaultSize,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;style&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxString</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wxStaticBitmapNameStr);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_424_439_Open_Image onclick="this.style.display='none'; Codehighlighter1_424_439_Open_Text.style.display='none'; Codehighlighter1_424_439_Closed_Image.style.display='inline'; Codehighlighter1_424_439_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_424_439_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_424_439_Closed_Text.style.display='none'; Codehighlighter1_424_439_Open_Image.style.display='inline'; Codehighlighter1_424_439_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;AcceptsFocus()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_424_439_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_424_439_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_EVENT_TABLE();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OnMouse(wxMouseEvent</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OnKeyDown(wxKeyEvent</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;WXLRESULT&nbsp;MSWWindowProc(WXUINT&nbsp;message,&nbsp;WXWPARAM&nbsp;wParam,&nbsp;WXLPARAM&nbsp;lParam);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div><img src ="http://www.cppblog.com/codejie/aggbug/140283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-02-18 17:48 <a href="http://www.cppblog.com/codejie/archive/2011/02/18/140283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Lingoes生词本第二十二版</title><link>http://www.cppblog.com/codejie/archive/2011/02/15/140093.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 15 Feb 2011 15:33:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/02/15/140093.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/140093.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/02/15/140093.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/140093.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/140093.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; LingosHook第二十二版（v1.3.000）终于可以发布了～请<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>。源码在<a href="http://lingoshook.googlecode.com/">这里</a>。<br><br>&nbsp;&nbsp;&nbsp; 先来一张新增的插件窗口的图，这也是此版本最大的修改。<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_plugin_main..png" border=0><br><br>&nbsp;&nbsp;&nbsp; 主要修改如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 支持插件，具体请访问<a title="LingosHook：Plugins under wxWidget" href="http://www.cppblog.com/codejie/archive/2011/01/07/138125.html">LingosHook：Plugins under wxWidget</a>；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 新增插件，具体请访问<a title="LingosHook: WordExport Plugin Done" href="http://www.cppblog.com/codejie/archive/2011/01/31/139645.html">LingosHook：WordExport Plugin Done</a>；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 更新配置，具体请访问<a title="LingosHook： Add 'Stop Auto Retrieve' Configuration Item" href="http://www.cppblog.com/codejie/archive/2011/02/01/139663.html">LingosHook：Add 'Stop Auto Retrieve' Configuration Item</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 添加Donate按钮，请多多Donate！<br><br><br>&nbsp;&nbsp;&nbsp; 今天咱们就主要说下Donate功能吧。。。Donate在About窗口中，点击<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_donate_btn..png" border=0>按钮，会转到我新开的taobao店，目前里面什么也没有，因为还没有时间去弄，想着做人要厚道，还是先把这个新版本上传了比较好。。。打算有时间了，在上面卖一个特殊的、<strong style="COLOR: red">无任何功能</strong>的插件，希望有多些好心人<span style="COLOR: red">卖个千把个</span>的，那就发财了。。。谢谢了。。。。<br>&nbsp;&nbsp;&nbsp; 为啥弄个没功能的插件呢？想着还是LingosHook是开源、免费的，卖插件什么的，太不地道了。。。当然了，要是哪个需要个&#8220;专用&#8221;插件什么的。。。嘿嘿，嘿嘿。。。小心啊，我可是想发财都快疯了的人了。。。这个没功能插件已经想好了，只是近来一直比较&#8220;忙&#8221;，还没有开始写呢，跟这个店铺一样，什么都没有还。。。所以啊，各位就先看看热闹了。。。<br><br>&nbsp;&nbsp;&nbsp; 就这些，敬请<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">下载</a>使用新版LingosHook！<img src ="http://www.cppblog.com/codejie/aggbug/140093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-02-15 23:33 <a href="http://www.cppblog.com/codejie/archive/2011/02/15/140093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook： Add 'Stop Auto Retrieve'  Configuration Item</title><link>http://www.cppblog.com/codejie/archive/2011/02/01/139663.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 01 Feb 2011 04:46:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/02/01/139663.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/139663.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/02/01/139663.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/139663.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/139663.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 今天把LingosHook的配置部分修改了，增加了&#8216;停止自动取词&#8217;的选项，同时调整了一下配置项的位置。相应地在系统托盘菜单上增加了相应的菜单项。如下图示：<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_setting_1..png" border=0><br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_tryicon_1..png" border=0><br><br>&nbsp;&nbsp;&nbsp; 这个配置项如其名，可以实现停止自动取词功能，以满足某些情况下禁止取词或者仅使用快捷键取词情况。<br>&nbsp;&nbsp;&nbsp; 具体修改请这里检查源码：<a href="http://code.google.com/p/lingoshook/source/browse/branches#branches%2F1.3.000"><u><font color=#0000ff>http://code.google.com/p/lingoshook/source/browse/branches#branches%2F1.3.000</font></u></a><br><br><br>&lt;---- 问候的分割线 ----&gt;<br>&nbsp;&nbsp;&nbsp;感谢所有使用和即将使用LingosHook的朋友们！新年好！<img src ="http://www.cppblog.com/codejie/aggbug/139663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-02-01 12:46 <a href="http://www.cppblog.com/codejie/archive/2011/02/01/139663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook: WordExport Plugin Done</title><link>http://www.cppblog.com/codejie/archive/2011/01/31/139645.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 31 Jan 2011 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/01/31/139645.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/139645.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/01/31/139645.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/139645.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/139645.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp; 如下图所示，WordExport插件终于搞定了～<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lhp_wexport_2.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 自己感觉良好，很好用～目前音标是无法导出的，主要是因为音标数据是跟具体词典相关的，但多数情况下是直接存储HTML数据的，这样就无法获得这个数据，只能Disable了。我本地因为使用EC词典，导出倒是正常的。<br><br>&nbsp;&nbsp;&nbsp; 下面是插件基类的最终版本：<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: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ActivityObject&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">:&nbsp;public&nbsp;wxEvtHandler</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_45_941_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_941_Open_Text.style.display='none'; Codehighlighter1_45_941_Closed_Image.style.display='inline'; Codehighlighter1_45_941_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_45_941_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_941_Closed_Text.style.display='none'; Codehighlighter1_45_941_Open_Image.style.display='inline'; Codehighlighter1_45_941_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_45_941_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_45_941_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;PropertyData<br><img id=Codehighlighter1_83_274_Open_Image onclick="this.style.display='none'; Codehighlighter1_83_274_Open_Text.style.display='none'; Codehighlighter1_83_274_Closed_Image.style.display='inline'; Codehighlighter1_83_274_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_83_274_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_274_Closed_Text.style.display='none'; Codehighlighter1_83_274_Open_Image.style.display='inline'; Codehighlighter1_83_274_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_83_274_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_83_274_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strLabel;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strName;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strVersion;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strAuthor;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strDescription;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;m_strDetail;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ActivityObject();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">ActivityObject();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_392_404_Open_Image onclick="this.style.display='none'; Codehighlighter1_392_404_Open_Text.style.display='none'; Codehighlighter1_392_404_Closed_Image.style.display='inline'; Codehighlighter1_392_404_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_392_404_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_392_404_Closed_Text.style.display='none'; Codehighlighter1_392_404_Open_Image.style.display='inline'; Codehighlighter1_392_404_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Init(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;fparam&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sparam&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_392_404_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_392_404_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_431_432_Open_Image onclick="this.style.display='none'; Codehighlighter1_431_432_Open_Text.style.display='none'; Codehighlighter1_431_432_Closed_Image.style.display='inline'; Codehighlighter1_431_432_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_431_432_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_431_432_Closed_Text.style.display='none'; Codehighlighter1_431_432_Open_Image.style.display='inline'; Codehighlighter1_431_432_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Final()&nbsp;</span><span id=Codehighlighter1_431_432_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_431_432_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;LoadProperty(PropertyData</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;data)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_540_569_Open_Image onclick="this.style.display='none'; Codehighlighter1_540_569_Open_Text.style.display='none'; Codehighlighter1_540_569_Closed_Image.style.display='inline'; Codehighlighter1_540_569_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_540_569_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_540_569_Closed_Text.style.display='none'; Codehighlighter1_540_569_Open_Image.style.display='inline'; Codehighlighter1_540_569_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetInterfaceVersion()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_540_569_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_540_569_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_iInterfaceVersion;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Active(wxApp</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;papp,&nbsp;wxWindow</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pwindow)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>#ifndef&nbsp;__TEST_PLUGINS__<br><img id=Codehighlighter1_696_712_Open_Image onclick="this.style.display='none'; Codehighlighter1_696_712_Open_Text.style.display='none'; Codehighlighter1_696_712_Closed_Image.style.display='inline'; Codehighlighter1_696_712_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_696_712_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_696_712_Closed_Text.style.display='none'; Codehighlighter1_696_712_Open_Image.style.display='inline'; Codehighlighter1_696_712_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;NeedDBAccess()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_696_712_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_696_712_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;bool&nbsp;NeedTagAccess()&nbsp;const&nbsp;{&nbsp;return&nbsp;false;&nbsp;}</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SetDBObject(CDBAccess</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;obj);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>#ifndef&nbsp;__TEST_PLUGINS__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CDBAccess</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;_objDBAccess;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_iInterfaceVersion;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<p><br>&nbsp;&nbsp;&nbsp; 新增了个IterfaceVersion字段和相应的函数，用于检查插件和应用是否匹配，这也是为以后可能的插件接口变化留个后路。具体请查看<a href="http://code.google.com/p/lingoshook/source/browse/branches#branches%2F1.3.000%2FPlugins%2FP_WordExport">插件源码</a>。<br></p>
<p>&nbsp;&nbsp;&nbsp; 插件写好了，目前再修改LingosHook，计划增加和调整几个配置，比如禁止自动取词等。1.3.000应该快了～<br></p><img src ="http://www.cppblog.com/codejie/aggbug/139645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-01-31 16:37 <a href="http://www.cppblog.com/codejie/archive/2011/01/31/139645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++：找BUG～</title><link>http://www.cppblog.com/codejie/archive/2011/01/18/138764.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 18 Jan 2011 09:10:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/01/18/138764.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/138764.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/01/18/138764.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/138764.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/138764.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 下面有个函数，用于将6个字节的字符数组&#8216;转换&#8217;到12字节。例如：<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 id=Codehighlighter1_9_46_Open_Image onclick="this.style.display='none'; Codehighlighter1_9_46_Open_Text.style.display='none'; Codehighlighter1_9_46_Closed_Image.style.display='inline'; Codehighlighter1_9_46_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_9_46_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_46_Closed_Text.style.display='none'; Codehighlighter1_9_46_Open_Image.style.display='inline'; Codehighlighter1_9_46_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">src[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_9_46_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_9_46_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #000000">0x12</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0x34</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0x56</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0x78</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0x9a</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0xbc</span><span style="COLOR: #000000">&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_59_109_Open_Image onclick="this.style.display='none'; Codehighlighter1_59_109_Open_Text.style.display='none'; Codehighlighter1_59_109_Closed_Image.style.display='inline'; Codehighlighter1_59_109_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_59_109_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_109_Closed_Text.style.display='none'; Codehighlighter1_59_109_Open_Image.style.display='inline'; Codehighlighter1_59_109_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>dst[</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_59_109_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_59_109_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;}</span></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;因为目标是字符串风格，为了显示需要，dst实际使用的是13字节长度数组，如下：<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">unsigned&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;dst[</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>makeId(dst,&nbsp;src);</span></div>
<br>&nbsp;&nbsp;&nbsp; 函数如下，麻烦找下Bug。<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: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ISLUtil::makeId(unsigned&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;id,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ptr)<br><img id=Codehighlighter1_66_709_Open_Image onclick="this.style.display='none'; Codehighlighter1_66_709_Open_Text.style.display='none'; Codehighlighter1_66_709_Closed_Image.style.display='inline'; Codehighlighter1_66_709_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_66_709_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_709_Closed_Text.style.display='none'; Codehighlighter1_66_709_Open_Image.style.display='inline'; Codehighlighter1_66_709_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_66_709_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_66_709_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_104_687_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_687_Open_Text.style.display='none'; Codehighlighter1_104_687_Closed_Image.style.display='inline'; Codehighlighter1_104_687_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_104_687_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_687_Closed_Text.style.display='none'; Codehighlighter1_104_687_Open_Image.style.display='inline'; Codehighlighter1_104_687_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_104_687_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_104_687_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ptr&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_180_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_180_218_Open_Text.style.display='none'; Codehighlighter1_180_218_Closed_Image.style.display='inline'; Codehighlighter1_180_218_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_180_218_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_180_218_Closed_Text.style.display='none'; Codehighlighter1_180_218_Open_Image.style.display='inline'; Codehighlighter1_180_218_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_180_218_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_180_218_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x0a</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x0f</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_268_305_Open_Image onclick="this.style.display='none'; Codehighlighter1_268_305_Open_Text.style.display='none'; Codehighlighter1_268_305_Closed_Image.style.display='inline'; Codehighlighter1_268_305_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_268_305_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_268_305_Closed_Text.style.display='none'; Codehighlighter1_268_305_Open_Image.style.display='inline'; Codehighlighter1_268_305_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_268_305_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_268_305_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_328_359_Open_Image onclick="this.style.display='none'; Codehighlighter1_328_359_Open_Text.style.display='none'; Codehighlighter1_328_359_Closed_Image.style.display='inline'; Codehighlighter1_328_359_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_328_359_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_328_359_Closed_Text.style.display='none'; Codehighlighter1_328_359_Open_Image.style.display='inline'; Codehighlighter1_328_359_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_328_359_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_328_359_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ptr&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x0F</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;id;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_449_486_Open_Image onclick="this.style.display='none'; Codehighlighter1_449_486_Open_Text.style.display='none'; Codehighlighter1_449_486_Closed_Image.style.display='inline'; Codehighlighter1_449_486_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_449_486_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_449_486_Closed_Text.style.display='none'; Codehighlighter1_449_486_Open_Image.style.display='inline'; Codehighlighter1_449_486_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_449_486_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_449_486_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x0a</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x0f</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_536_573_Open_Image onclick="this.style.display='none'; Codehighlighter1_536_573_Open_Text.style.display='none'; Codehighlighter1_536_573_Closed_Image.style.display='inline'; Codehighlighter1_536_573_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_536_573_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_536_573_Closed_Text.style.display='none'; Codehighlighter1_536_573_Open_Image.style.display='inline'; Codehighlighter1_536_573_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_536_573_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_536_573_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_596_627_Open_Image onclick="this.style.display='none'; Codehighlighter1_596_627_Open_Text.style.display='none'; Codehighlighter1_596_627_Closed_Image.style.display='inline'; Codehighlighter1_596_627_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_596_627_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_596_627_Closed_Text.style.display='none'; Codehighlighter1_596_627_Open_Image.style.display='inline'; Codehighlighter1_596_627_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_596_627_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_596_627_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;ptr;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;id;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;id[</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>&lt;----郁闷的分割线----&gt;<br><br>&nbsp;&nbsp;&nbsp; Y的，白痴的错误搞了我两天。。。。<img src ="http://www.cppblog.com/codejie/aggbug/138764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-01-18 17:10 <a href="http://www.cppblog.com/codejie/archive/2011/01/18/138764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Plugins under wxWidget</title><link>http://www.cppblog.com/codejie/archive/2011/01/07/138125.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 07 Jan 2011 10:39:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/01/07/138125.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/138125.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/01/07/138125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/138125.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/138125.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 这几天一直在被Plugins折腾，用老办法用wxWidget实现插件方式一直都失败，主要是在DLL中创建的窗口无法获得Application Instance，导致窗口弹出时，直接CORE，很是苦恼。。。后来尝试将主窗口的Instance和Window作为参数传给DLL中的窗口，弹出没有问题，但当窗口关闭是，也会引起主窗口关闭，怀疑是公用消息队列所致，又是苦恼了几天～<br>&nbsp;&nbsp;&nbsp; 好在现在世界无限大，找来找去，还真发现早有前辈实现了这些，啥也不管了，COPY &amp; PASTE 先，爸爸说的好－－&#8220;天下文人是一家&#8221;，我觉得程序员亦是如此。。。<br>&nbsp;&nbsp;&nbsp; 原帖在这，敬请移步－－<a href="http://wxforum.shadonet.com/viewtopic.php?t=13178&amp;highlight=plugin">http://wxforum.shadonet.com/viewtopic.php?t=13178&amp;highlight=plugin</a><br><br>&nbsp;&nbsp;&nbsp; 虽还没有太弄懂其原理，但大体看原帖应该也碰到了和我一样的问题。所以其在DLL创建窗口前，先初始了一个App来接管或者封装住后面的窗口。实在是高人，至少我没有想到这样，用到的那些函数也从没见过，实在是高啊。。。这里我还有些糊涂，此时DLL中的窗口运行在哪个进程中？我还不想在LingosHook中引入锁。。。<br><br>&nbsp;&nbsp;&nbsp; 下面是主要的，也是重要的代码。<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">#ifndef&nbsp;__EXPORTS_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__EXPORTS_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000; TEXT-DECORATION: underline">http://wxforum.shadonet.com/viewtopic.php?t=13178</span><span style="COLOR: #008000">&amp;highlight=plugin</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wx/wx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wx/msw/private.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;IMPLEMENT_PLUGIN(name)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_325_344_Open_Image onclick="this.style.display='none'; Codehighlighter1_325_344_Open_Text.style.display='none'; Codehighlighter1_325_344_Closed_Image.style.display='inline'; Codehighlighter1_325_344_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_325_344_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_325_344_Closed_Text.style.display='none'; Codehighlighter1_325_344_Open_Image.style.display='inline'; Codehighlighter1_325_344_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;__declspec(dllexport)&nbsp;ActivityObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;GetActivity()&nbsp;</span><span id=Codehighlighter1_325_344_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_325_344_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;name;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;name##DLLApp&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;wxApp&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img id=Codehighlighter1_547_642_Open_Image onclick="this.style.display='none'; Codehighlighter1_547_642_Open_Text.style.display='none'; Codehighlighter1_547_642_Closed_Image.style.display='inline'; Codehighlighter1_547_642_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_547_642_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_547_642_Closed_Text.style.display='none'; Codehighlighter1_547_642_Open_Image.style.display='inline'; Codehighlighter1_547_642_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_547_642_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_547_642_Open_Text><span style="COLOR: #000000">{&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;IMPLEMENT_APP_NO_MAIN(name##DLLApp)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;APIENTRY&nbsp;DllMain(HANDLE&nbsp;hModule,&nbsp;DWORD&nbsp;uCallReason,&nbsp;LPVOID&nbsp;pReserved)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img id=Codehighlighter1_1022_3193_Open_Image onclick="this.style.display='none'; Codehighlighter1_1022_3193_Open_Text.style.display='none'; Codehighlighter1_1022_3193_Closed_Image.style.display='inline'; Codehighlighter1_1022_3193_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1022_3193_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1022_3193_Closed_Text.style.display='none'; Codehighlighter1_1022_3193_Open_Image.style.display='inline'; Codehighlighter1_1022_3193_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1022_3193_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1022_3193_Open_Text><span style="COLOR: #000000">{&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(uCallReason)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img id=Codehighlighter1_1216_2912_Open_Image onclick="this.style.display='none'; Codehighlighter1_1216_2912_Open_Text.style.display='none'; Codehighlighter1_1216_2912_Closed_Image.style.display='inline'; Codehighlighter1_1216_2912_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1216_2912_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1216_2912_Closed_Text.style.display='none'; Codehighlighter1_1216_2912_Open_Image.style.display='inline'; Codehighlighter1_1216_2912_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1216_2912_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1216_2912_Open_Text><span style="COLOR: #000000">{&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;DLL_PROCESS_ATTACH:&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img id=Codehighlighter1_1407_1882_Open_Image onclick="this.style.display='none'; Codehighlighter1_1407_1882_Open_Text.style.display='none'; Codehighlighter1_1407_1882_Closed_Image.style.display='inline'; Codehighlighter1_1407_1882_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1407_1882_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1407_1882_Closed_Text.style.display='none'; Codehighlighter1_1407_1882_Open_Image.style.display='inline'; Codehighlighter1_1407_1882_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1407_1882_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1407_1882_Open_Text><span style="COLOR: #000000">{&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxSetInstance((HINSTANCE)hModule);&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxEntryStart(argc,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">argv);&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;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;DLL_THREAD_ATTACH:&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;DLL_THREAD_DETACH:&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;DLL_PROCESS_DETACH:&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxEntryCleanup();&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&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;&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;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span></div>
<br>&nbsp;&nbsp;&nbsp; 上面代码被我去掉了几行，没别的意思，只是感觉么什么用处，当然也可能自己道行还不够，没体会到其中奥秘。不过去掉了还是能正常使用，如下图。有兴趣的，请去看原帖。<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-plugin-test..png" border=0><br><br><br>&lt;----&nbsp;蛋疼的分割线----&gt;<br><br>&nbsp;&nbsp;&nbsp; 知道啥叫&#8216;蛋疼&#8217;不。。。为了搞定这个Plugins，特意写了Test工程。。。搞死我了。。。<br><img src ="http://www.cppblog.com/codejie/aggbug/138125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2011-01-07 18:39 <a href="http://www.cppblog.com/codejie/archive/2011/01/07/138125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Plugins</title><link>http://www.cppblog.com/codejie/archive/2010/12/29/137632.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 28 Dec 2010 17:10:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/12/29/137632.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/137632.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/12/29/137632.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/137632.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/137632.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; LingosHook最近的版本发布有五个多月了，下载量也超过2500了～看来Lingoes真的很流行，单词本真的很需要啊。。。&nbsp;&nbsp;&nbsp; 从目前得到的反馈情况看，有一半多的都是增强功能。如果把这些功能一一加到LingosHook中，总感觉会使其变得臃肿，甚至可能就偏离了作为单词本的主线了。但有些功能确实可以很有用的，比如单词的导出，等...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2010/12/29/137632.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/137632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-12-29 01:10 <a href="http://www.cppblog.com/codejie/archive/2010/12/29/137632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook:wxWidget处理命令行代码</title><link>http://www.cppblog.com/codejie/archive/2010/08/13/123332.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 13 Aug 2010 07:47:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/08/13/123332.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/123332.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/08/13/123332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/123332.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/123332.html</trackback:ping><description><![CDATA[<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 id=Codehighlighter1_26_119_Open_Image onclick="this.style.display='none'; Codehighlighter1_26_119_Open_Text.style.display='none'; Codehighlighter1_26_119_Closed_Image.style.display='inline'; Codehighlighter1_26_119_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_26_119_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_26_119_Closed_Text.style.display='none'; Codehighlighter1_26_119_Open_Image.style.display='inline'; Codehighlighter1_26_119_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyApp:&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;wxApp&nbsp;</span><span id=Codehighlighter1_26_119_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_26_119_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;OnInit();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxCmdLineEntryDesc&nbsp;_cmdLineDesc[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>DECLARE_APP(MyApp)</span></div>
<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"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>IMPLEMENT_APP(MyApp)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxCmdLineEntryDesc&nbsp;MyApp::_cmdLineDesc[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_78_378_Open_Image onclick="this.style.display='none'; Codehighlighter1_78_378_Open_Text.style.display='none'; Codehighlighter1_78_378_Closed_Image.style.display='inline'; Codehighlighter1_78_378_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_78_378_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_78_378_Closed_Text.style.display='none'; Codehighlighter1_78_378_Open_Image.style.display='inline'; Codehighlighter1_78_378_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_78_378_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_78_378_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_88_210_Open_Image onclick="this.style.display='none'; Codehighlighter1_88_210_Open_Text.style.display='none'; Codehighlighter1_88_210_Closed_Image.style.display='inline'; Codehighlighter1_88_210_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_88_210_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_88_210_Closed_Text.style.display='none'; Codehighlighter1_88_210_Open_Image.style.display='inline'; Codehighlighter1_88_210_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_88_210_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_88_210_Open_Text><span style="COLOR: #000000">{&nbsp;wxCMD_LINE_OPTION,&nbsp;wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;NULL,&nbsp;wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><a title="LingosHook" href="www.cppblog.com/codejie" >LingosHook</a>&nbsp;database&nbsp;file(default&nbsp;is&nbsp;'LingosHook.db3').</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;wxCMD_LINE_VAL_STRING&nbsp;}</span></span><span style="COLOR: #000000">,<br><img id=Codehighlighter1_221_343_Open_Image onclick="this.style.display='none'; Codehighlighter1_221_343_Open_Text.style.display='none'; Codehighlighter1_221_343_Closed_Image.style.display='inline'; Codehighlighter1_221_343_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_221_343_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_221_343_Closed_Text.style.display='none'; Codehighlighter1_221_343_Open_Image.style.display='inline'; Codehighlighter1_221_343_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_221_343_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_221_343_Open_Text><span style="COLOR: #000000">{&nbsp;wxCMD_LINE_OPTION,&nbsp;wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">F</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;NULL,&nbsp;wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><a title="LingosHook" href="www.cppblog.com/codejie" >LingosHook</a>&nbsp;database&nbsp;file(default&nbsp;is&nbsp;'LingosHook.db3').</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;wxCMD_LINE_VAL_STRING&nbsp;}</span></span><span style="COLOR: #000000">,<br><img id=Codehighlighter1_354_372_Open_Image onclick="this.style.display='none'; Codehighlighter1_354_372_Open_Text.style.display='none'; Codehighlighter1_354_372_Closed_Image.style.display='inline'; Codehighlighter1_354_372_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_354_372_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_354_372_Closed_Text.style.display='none'; Codehighlighter1_354_372_Open_Image.style.display='inline'; Codehighlighter1_354_372_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_354_372_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_354_372_Open_Text><span style="COLOR: #000000">{&nbsp;wxCMD_LINE_NONE&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;MyApp::OnInit()<br><img id=Codehighlighter1_403_910_Open_Image onclick="this.style.display='none'; Codehighlighter1_403_910_Open_Text.style.display='none'; Codehighlighter1_403_910_Closed_Image.style.display='inline'; Codehighlighter1_403_910_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_403_910_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_403_910_Closed_Text.style.display='none'; Codehighlighter1_403_910_Open_Image.style.display='inline'; Codehighlighter1_403_910_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_403_910_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_403_910_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;wxInitAllImageHandlers();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;wxCmdLineParser&nbsp;parser&nbsp;(_cmdLineDesc,&nbsp;argc,&nbsp;argv);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(parser.Parse()&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_524_709_Open_Image onclick="this.style.display='none'; Codehighlighter1_524_709_Open_Text.style.display='none'; Codehighlighter1_524_709_Closed_Image.style.display='inline'; Codehighlighter1_524_709_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_524_709_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_524_709_Closed_Text.style.display='none'; Codehighlighter1_524_709_Open_Image.style.display='inline'; Codehighlighter1_524_709_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_524_709_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_524_709_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxString&nbsp;str&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wxEmptyString;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(parser.Found(wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">str)&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;parser.Found(wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">F</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">str))<br><img id=Codehighlighter1_645_699_Open_Image onclick="this.style.display='none'; Codehighlighter1_645_699_Open_Text.style.display='none'; Codehighlighter1_645_699_Closed_Image.style.display='inline'; Codehighlighter1_645_699_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_645_699_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_645_699_Closed_Text.style.display='none'; Codehighlighter1_645_699_Open_Image.style.display='inline'; Codehighlighter1_645_699_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_645_699_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_645_699_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CConfigData::m_strDBFile&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;LingosHookFrame</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;MainFrame&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;LingosHookFrame(NULL,&nbsp;wxID_ANY,&nbsp;wxEmptyString);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MainFrame</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetIcon(wxICON(ICON_MAIN));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;SetTopWindow(MainFrame);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MainFrame</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Show();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>&nbsp;&nbsp;&nbsp; 啥也不说，自己看。。。<img src ="http://www.cppblog.com/codejie/aggbug/123332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-08-13 15:47 <a href="http://www.cppblog.com/codejie/archive/2010/08/13/123332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Lingoes生词本第十八版</title><link>http://www.cppblog.com/codejie/archive/2010/08/04/122202.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 04 Aug 2010 14:25:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/08/04/122202.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/122202.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/08/04/122202.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/122202.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/122202.html</trackback:ping><description><![CDATA[<p><br>&nbsp;&nbsp;&nbsp; LingosHook第十八版(v1.2.001)主要围绕提高HTML数据词典识别率和识别速度做了大幅度的修改，可以<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>了。修改内容如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 定义三种词典解析类型，并以此为据重新设计实现HTML数据分析算法；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 增加对词典解析配置，包括指定词典解析类型和是否解析；<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 描述的有些晕，还是上图说明吧。<br>&nbsp;&nbsp;&nbsp;&nbsp; 如下图所示，在配置界面中新增了一个按钮，用于配置词典的解析参数；<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/LH-set-store1.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 点击此按钮，将弹出如下对话框，用于设置词典解析参数；<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/LH-storedlg-1.png" border=0><br><br>&nbsp;&nbsp;&nbsp; （对，是的，我终于把图标变小了，用的是歪门邪道，不说也罢。。。）</p>
<p>&nbsp;&nbsp;&nbsp; 对话框中罗列了曾经使用过的词典。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 点击其图标可以设置指定词典的HTML数据是否被解析，&#8216;X&#8217;为不解析；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 通过右键菜单可以看出，程序当前在支持三种HTML数据解析类型：0，1，2；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 右键菜单中前端标记有&#8216;黑点&#8217;的类型表示此类型为程序默认类型；默认类型也可配置，请看下图；<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/LH-storedlg-2.png" border=0><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.&nbsp;当当前使用类型不为默认类型时，可设置其为默认类型；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5. 标记为粗体的词典表示当前使用的类型为默认类型；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. 点击'Reset the type of dictionary html data'按钮，可以将类型设置为其默认类型，如果存在的话；<br><br>&nbsp;&nbsp;&nbsp; 上图中所列词典为我当前测试的词典，除了&#8216;Jukuu&#8217;词典结果暂时无法归类外，其它词典都可以归为以上三类。因此当使用的词典不再以上列表中时，可先尝试依次设置不同解析类型，以检测是否可以分解其HTML数据。<br>&nbsp;&nbsp;&nbsp; 从我的分析看，结果的外层格式是由Lingoes定死的，但各结果数据格式来自词典自定义，这也是结果不同于的根本所在，所以无法预知Lingoes的HTML数据结果格式到底有多少种。有兴趣的可以自己添加解析类型，<a href="http://lingoshook.googlecode.com/">源码在这里</a>；当然你也可以发来词典名称和所查单词，由我来分析（这个请别太认真，我就说说，不能保证的。。。。）。<br><br></p>
<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">HtmlDictParser::TDictDefAttr&nbsp;g_stSysDictDefAttr[SIZE_DICTDEFATTR]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_73_1081_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_1081_Open_Text.style.display='none'; Codehighlighter1_73_1081_Closed_Image.style.display='inline'; Codehighlighter1_73_1081_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_73_1081_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_1081_Closed_Text.style.display='none'; Codehighlighter1_73_1081_Open_Image.style.display='inline'; Codehighlighter1_73_1081_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_73_1081_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_1081_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_83_151_Open_Image onclick="this.style.display='none'; Codehighlighter1_83_151_Open_Text.style.display='none'; Codehighlighter1_83_151_Closed_Image.style.display='inline'; Codehighlighter1_83_151_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_83_151_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_151_Closed_Text.style.display='none'; Codehighlighter1_83_151_Open_Image.style.display='inline'; Codehighlighter1_83_151_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_83_151_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_83_151_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E1C27E806399D047822B6650194A3D32</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Vicon&nbsp;EC</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_172_240_Open_Image onclick="this.style.display='none'; Codehighlighter1_172_240_Open_Text.style.display='none'; Codehighlighter1_172_240_Closed_Image.style.display='inline'; Codehighlighter1_172_240_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_172_240_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_172_240_Closed_Text.style.display='none'; Codehighlighter1_172_240_Open_Image.style.display='inline'; Codehighlighter1_172_240_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_172_240_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_172_240_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">7AB175CC5F622A44A0DECE976AF22A16</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Langdao&nbsp;EC</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_263_331_Open_Image onclick="this.style.display='none'; Codehighlighter1_263_331_Open_Text.style.display='none'; Codehighlighter1_263_331_Closed_Image.style.display='inline'; Codehighlighter1_263_331_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_263_331_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_263_331_Closed_Text.style.display='none'; Codehighlighter1_263_331_Open_Image.style.display='inline'; Codehighlighter1_263_331_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_263_331_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_263_331_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1E388F323A0BD943B30FC68598772814</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Fundset&nbsp;DC</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_354_422_Open_Image onclick="this.style.display='none'; Codehighlighter1_354_422_Open_Text.style.display='none'; Codehighlighter1_354_422_Closed_Image.style.display='inline'; Codehighlighter1_354_422_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_354_422_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_354_422_Closed_Text.style.display='none'; Codehighlighter1_354_422_Open_Image.style.display='inline'; Codehighlighter1_354_422_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_354_422_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_354_422_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0895DFE8DB67F9409DB285590D870EDD</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_2}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Dict.CN&nbsp;online</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_449_517_Open_Image onclick="this.style.display='none'; Codehighlighter1_449_517_Open_Text.style.display='none'; Codehighlighter1_449_517_Closed_Image.style.display='inline'; Codehighlighter1_449_517_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_449_517_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_449_517_Closed_Text.style.display='none'; Codehighlighter1_449_517_Open_Image.style.display='inline'; Codehighlighter1_449_517_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_449_517_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_449_517_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">D4722835273E184582F2D24696A738EA</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Longman&nbsp;Dictionary&nbsp;of&nbsp;Contemporary&nbsp;English</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_572_640_Open_Image onclick="this.style.display='none'; Codehighlighter1_572_640_Open_Text.style.display='none'; Codehighlighter1_572_640_Closed_Image.style.display='inline'; Codehighlighter1_572_640_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_572_640_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_572_640_Closed_Text.style.display='none'; Codehighlighter1_572_640_Open_Image.style.display='inline'; Codehighlighter1_572_640_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_572_640_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_572_640_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">25D62D261B9B6943BE86B7DCF8F9D255</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Concise&nbsp;English&nbsp;Synonym&nbsp;&amp;amp;&nbsp;Antonym&nbsp;Dictionary</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_701_769_Open_Image onclick="this.style.display='none'; Codehighlighter1_701_769_Open_Text.style.display='none'; Codehighlighter1_701_769_Closed_Image.style.display='inline'; Codehighlighter1_701_769_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_701_769_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_701_769_Closed_Text.style.display='none'; Codehighlighter1_701_769_Open_Image.style.display='inline'; Codehighlighter1_701_769_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_701_769_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_701_769_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">74BF7ECCE3A9AC43B5E8902261A19B29</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Hudong&nbsp;Wiki</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_793_861_Open_Image onclick="this.style.display='none'; Codehighlighter1_793_861_Open_Text.style.display='none'; Codehighlighter1_793_861_Closed_Image.style.display='inline'; Codehighlighter1_793_861_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_793_861_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_793_861_Closed_Text.style.display='none'; Codehighlighter1_793_861_Open_Image.style.display='inline'; Codehighlighter1_793_861_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_793_861_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_793_861_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C68363F3F2F8F04997C0552720B30742</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_1}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Google&nbsp;Web&nbsp;Definition</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_895_963_Open_Image onclick="this.style.display='none'; Codehighlighter1_895_963_Open_Text.style.display='none'; Codehighlighter1_895_963_Closed_Image.style.display='inline'; Codehighlighter1_895_963_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_895_963_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_895_963_Closed_Text.style.display='none'; Codehighlighter1_895_963_Open_Image.style.display='inline'; Codehighlighter1_895_963_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_895_963_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_895_963_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3A259F0851B07D4AAA30FBFA43686AB3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_2}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Dr.eye&nbsp;Online</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_989_1057_Open_Image onclick="this.style.display='none'; Codehighlighter1_989_1057_Open_Text.style.display='none'; Codehighlighter1_989_1057_Closed_Image.style.display='inline'; Codehighlighter1_989_1057_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_989_1057_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_989_1057_Closed_Text.style.display='none'; Codehighlighter1_989_1057_Open_Image.style.display='inline'; Codehighlighter1_989_1057_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_989_1057_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_989_1057_Open_Text><span style="COLOR: #000000">{L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">9455286C1F1BC84985523D2608B6A913</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;HtmlDictParser::HTMLDATATYPE_3}</span></span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Web&nbsp;Translation</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;</span></div>
<p><br><br>&lt;---- 疲惫的分割线 ----&gt;<br><br>&nbsp;&nbsp;&nbsp; 经过这次修改，LingosHook设计期的功能都实现了，应该可以收工，休息了。。。。<br></p><img src ="http://www.cppblog.com/codejie/aggbug/122202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-08-04 22:25 <a href="http://www.cppblog.com/codejie/archive/2010/08/04/122202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：近况－－犹如解密一般</title><link>http://www.cppblog.com/codejie/archive/2010/08/03/122081.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 03 Aug 2010 09:13:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/08/03/122081.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/122081.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/08/03/122081.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/122081.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/122081.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 啥也不说，先看看一段来自<a href="http://lingoshook.googlecode.com/">LingosHook的代码</a>先～<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: #0000ff">int</span><span style="COLOR: #000000">&nbsp;CHtmlDictParser::HtmlDataType1Proc(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">html,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dictid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CDocumentObject&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">doc,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CElementObject&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">dict,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CElementObject&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pdiv,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;HtmlDictParser::TDictResult&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">res,&nbsp;TResultMap&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">result)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_291_1010_Open_Image onclick="this.style.display='none'; Codehighlighter1_291_1010_Open_Text.style.display='none'; Codehighlighter1_291_1010_Closed_Image.style.display='inline'; Codehighlighter1_291_1010_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_291_1010_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_291_1010_Closed_Text.style.display='none'; Codehighlighter1_291_1010_Open_Image.style.display='inline'; Codehighlighter1_291_1010_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_291_1010_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_291_1010_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CElementObject&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pdiv</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(p&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(p&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL)<br><img id=Codehighlighter1_433_994_Open_Image onclick="this.style.display='none'; Codehighlighter1_433_994_Open_Text.style.display='none'; Codehighlighter1_433_994_Closed_Image.style.display='inline'; Codehighlighter1_433_994_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_433_994_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_433_994_Closed_Text.style.display='none'; Codehighlighter1_433_994_Open_Image.style.display='inline'; Codehighlighter1_433_994_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_433_994_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_433_994_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::wstring&nbsp;word&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">child</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">value;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(PushResult(word,&nbsp;res,&nbsp;result)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;NULL)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sibling;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>&nbsp;&nbsp; 此函数用于分解出下面HTML数据中的单词，只是其中那段if语句是否让你感到眼晕？<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">&nbsp;&lt;id="dict_body_7AB175CC5F622A44A0DECE976AF22A16"&gt;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="dict_gls_7AB175CC5F622A44A0DECE976AF22A16"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;5px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="WIDTH:&nbsp;100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="FLOAT:&nbsp;left;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">="11"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"file:///C:/Program%20Files/Lingoes/Translator2.7/dict/image/entry_p.png"</span><span style="COLOR: #ff0000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="COLOR: #0000ff">="10"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="absmiddle"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="OVERFLOW-X:&nbsp;hidden;&nbsp;WIDTH:&nbsp;100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px;&nbsp;COLOR:&nbsp;#808080;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"FONT-SIZE:&nbsp;10.5pt;&nbsp;COLOR:&nbsp;#000000;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AC</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公元前<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">="navy"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">[计]</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;存取周期,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;应用控制,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;自动计算机<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">="navy"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">[化]</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;交流;&nbsp;交变电流<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"PADDING-RIGHT:&nbsp;0px;&nbsp;BORDER-TOP:&nbsp;#c7d4dc&nbsp;1px&nbsp;solid;&nbsp;PADDING-LEFT:&nbsp;0px;&nbsp;PADDING-BOTTOM:&nbsp;0px;&nbsp;PADDING-TOP:&nbsp;5px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;5px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="WIDTH:&nbsp;100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="FLOAT:&nbsp;left;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">="11"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"file:///C:/Program%20Files/Lingoes/Translator2.7/dict/image/entry_p.png"</span><span style="COLOR: #ff0000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="COLOR: #0000ff">="10"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="absmiddle"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="OVERFLOW-X:&nbsp;hidden;&nbsp;WIDTH:&nbsp;100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px;&nbsp;COLOR:&nbsp;#808080;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">=<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"FONT-SIZE:&nbsp;10.5pt;&nbsp;COLOR:&nbsp;#000000;&nbsp;LINE-HEIGHT:&nbsp;normal"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ac.</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">="navy"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">[医]</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;锕(89号元素)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span></div>
<br>&nbsp;&nbsp;&nbsp; Lingoes的结果数据看似很有规律，实际内部有非常微小的差异，为提高LingosHook识别能力，不得不需要非常仔细地分析这些数据，以找出其规律。这个分析过程，让我想起去年<a href="http://www.cppblog.com/codejie/category/9783.html">破解WOW的MPQ文件</a>时的经历，痛苦啊，有兴趣，可查看<a href="http://www.cppblog.com/codejie/archive/2009/04/30/81586.html">这里</a>的贴图～<br>&nbsp;&nbsp;&nbsp; 目前测试的词典多数可以归为两类，以分别写了相应的函数进行处理，根据&#8220;解密&#8221;结果优化HTML处理过程，尽量做到快速和通用，再检测几个词典结果，过两天应该可以更新了。唉，累死我了，还好这几天工作上没有&#8220;情况&#8221;发生，&#8220;解密&#8221;是需要消耗大把时间的～<img src ="http://www.cppblog.com/codejie/aggbug/122081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-08-03 17:13 <a href="http://www.cppblog.com/codejie/archive/2010/08/03/122081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Lingoes生词本第十六版</title><link>http://www.cppblog.com/codejie/archive/2010/07/19/120812.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 19 Jul 2010 12:24:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/07/19/120812.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/120812.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/07/19/120812.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/120812.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/120812.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; LingosHook第十六版（v1.1.002)功能上没有啥变化，都是小打小闹的修改而已，这里可以<a href="http://www.cppblog.com/codejie/archive/2010/04/29/108996.html">下载</a>。<br>&nbsp;&nbsp;&nbsp; 版本主要修改如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Tray菜单中的'Run Lingoes'项在Lingoes启动的情况下将变为灰色，不能点击；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lingoes禁止多实例运行的，所以点了也没用，索性就不让点好了。还是LingosHook好，运行几个都行，嘿嘿。。。不知道各位测试过没有，如果运行多个LingosHook，在取词是会有什么结果？我不说，你们猜去吧，反正第一次无意这样做时，吓了一跳，感觉很神。。。不是我神，API神啊。。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 修正点击HTML窗口导致焦点丢失的问题；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面有同学报告说&#8216;左侧Index窗口中，上下方向键失效&#8217;的问题。这个问题我是知道的，是由于wxActivex在获得焦点后，每次刷新HTML数据时，都自动获得焦点，导致Index窗口失去焦点，无法使用方向键；这个问题还一样出现在&#8216;Daily Memory&#8217;的输入框中，直接导致输入框的快捷方式无法使用，这个功能可是我最喜欢的一个啊。。。于是发了狠心修正，无奈能力不够，wxActiveX怎么改都不行，最后只好发扬&#8216;打不过还躲不过&#8217;的精神－－为了防止其抢焦点，在相应控件获得焦点是时，直接将wxActiveX来个Disable，绝吧。。。但不让人查看HTML页面又有点&#8216;过分&#8217;，于是在鼠标移开，或者人为使控件丢失焦点时（就是鼠标点击别的控件了。。），再将其Enable下。。。原理很&#8216;无聊&#8217;，很简单的。。。部分相关代码如下，真的很简单的。。。<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: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CLHListBox::OnSetFocus(wxFocusEvent&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_49_193_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_193_Open_Text.style.display='none'; Codehighlighter1_49_193_Closed_Image.style.display='inline'; Codehighlighter1_49_193_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_49_193_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_193_Closed_Text.style.display='none'; Codehighlighter1_49_193_Open_Image.style.display='inline'; Codehighlighter1_49_193_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_49_193_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_49_193_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;wxCommandEvent&nbsp;ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,&nbsp;&nbsp;GetId());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ev.SetInt(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;GetEventHandler()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ProcessEvent(ev);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">.Skip();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CLHListBox::OnKillFocus(wxFocusEvent&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_246_390_Open_Image onclick="this.style.display='none'; Codehighlighter1_246_390_Open_Text.style.display='none'; Codehighlighter1_246_390_Closed_Image.style.display='inline'; Codehighlighter1_246_390_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_246_390_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_246_390_Closed_Text.style.display='none'; Codehighlighter1_246_390_Open_Image.style.display='inline'; Codehighlighter1_246_390_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_246_390_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_246_390_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;wxCommandEvent&nbsp;ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,&nbsp;&nbsp;GetId());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ev.SetInt(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;GetEventHandler()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ProcessEvent(ev);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">.Skip();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CLHListBox::OnMouseLeave(wxMouseEvent&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_444_589_Open_Image onclick="this.style.display='none'; Codehighlighter1_444_589_Open_Text.style.display='none'; Codehighlighter1_444_589_Closed_Image.style.display='inline'; Codehighlighter1_444_589_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_444_589_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_444_589_Closed_Text.style.display='none'; Codehighlighter1_444_589_Open_Image.style.display='inline'; Codehighlighter1_444_589_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_444_589_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_444_589_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;wxCommandEvent&nbsp;ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,&nbsp;&nbsp;GetId());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ev.SetInt(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;GetEventHandler()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ProcessEvent(ev);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">.Skip();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<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: #0000ff">void</span><span style="COLOR: #000000">&nbsp;LingosHookFrame::OnIndexFocus(wxCommandEvent</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_58_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_58_164_Open_Text.style.display='none'; Codehighlighter1_58_164_Closed_Image.style.display='inline'; Codehighlighter1_58_164_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_58_164_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_58_164_Closed_Text.style.display='none'; Codehighlighter1_58_164_Open_Image.style.display='inline'; Codehighlighter1_58_164_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_58_164_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_58_164_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">event</span><span style="COLOR: #000000">.GetInt()&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_winHTML</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Enable(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_winHTML</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Enable(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>&nbsp;&nbsp;&nbsp; 是不是一只眼就能看懂。。。LingosHook全部代码在<a href="http://lingoshook.googlecode.com/">这里</a>。<br><br><br>&lt;---绿色分割线---&gt;<br>&nbsp;&nbsp; 尝试做LingosHook绿色版，失败了。。。请高人指点。。。<img src ="http://www.cppblog.com/codejie/aggbug/120812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-07-19 20:24 <a href="http://www.cppblog.com/codejie/archive/2010/07/19/120812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求解：编译顺序问题</title><link>http://www.cppblog.com/codejie/archive/2010/06/11/117646.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 11 Jun 2010 09:03:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/06/11/117646.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/117646.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/06/11/117646.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/117646.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/117646.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 环境：VC Express 2008<br><br>&nbsp;&nbsp;&nbsp; 如下代码，编译失败。<br><br>&nbsp;&nbsp;&nbsp; classA.h<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"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#ifndef&nbsp;__CLASSA_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__CLASSA_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">nameA.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CA<br><img id=Codehighlighter1_92_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_160_Open_Text.style.display='none'; Codehighlighter1_92_160_Closed_Image.style.display='inline'; Codehighlighter1_92_160_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_92_160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_160_Closed_Text.style.display='none'; Codehighlighter1_92_160_Open_Image.style.display='inline'; Codehighlighter1_92_160_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_92_160_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_92_160_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TVector;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_157_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_157_158_Open_Text.style.display='none'; Codehighlighter1_157_158_Closed_Image.style.display='inline'; Codehighlighter1_157_158_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_157_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_157_158_Closed_Text.style.display='none'; Codehighlighter1_157_158_Open_Image.style.display='inline'; Codehighlighter1_157_158_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CA()&nbsp;</span><span id=Codehighlighter1_157_158_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_157_158_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>&nbsp;nameA.h<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">#ifndef&nbsp;__NAMEA_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__NAMEA_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">classA.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;NA<br><img id=Codehighlighter1_75_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_75_162_Open_Text.style.display='none'; Codehighlighter1_75_162_Closed_Image.style.display='inline'; Codehighlighter1_75_162_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_75_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_75_162_Closed_Text.style.display='none'; Codehighlighter1_75_162_Open_Image.style.display='inline'; Codehighlighter1_75_162_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_75_162_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_75_162_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;INT;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CB<br><img id=Codehighlighter1_105_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_105_158_Open_Text.style.display='none'; Codehighlighter1_105_158_Closed_Image.style.display='inline'; Codehighlighter1_105_158_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_105_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_105_158_Closed_Text.style.display='none'; Codehighlighter1_105_158_Open_Image.style.display='inline'; Codehighlighter1_105_158_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_105_158_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_105_158_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CB();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Func(CA::TVector</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;vct);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>main.cpp<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">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">classA.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">nameA.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_51_67_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_67_Open_Text.style.display='none'; Codehighlighter1_51_67_Closed_Image.style.display='inline'; Codehighlighter1_51_67_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_67_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_67_Closed_Text.style.display='none'; Codehighlighter1_51_67_Open_Image.style.display='inline'; Codehighlighter1_51_67_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_51_67_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_51_67_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br><br>&nbsp;&nbsp;&nbsp; 编译错误为：<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">1</span><span style="COLOR: #000000">&gt;------</span><span style="COLOR: #000000">&nbsp;Build&nbsp;started:&nbsp;Project:&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">,&nbsp;Configuration:&nbsp;Debug&nbsp;Win32&nbsp;</span><span style="COLOR: #000000">------</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Compiling<img src="http://www.cppblog.com/Images/dot.gif"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">main.cpp<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">d:\temp\</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">\namea.h(</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">)&nbsp;:&nbsp;error&nbsp;C2653:&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">CA</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;not&nbsp;a&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;or&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;name<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">d:\temp\</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">\namea.h(</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">)&nbsp;:&nbsp;error&nbsp;C2061:&nbsp;syntax&nbsp;error&nbsp;:&nbsp;identifier&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">TVector</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Build&nbsp;log&nbsp;was&nbsp;saved&nbsp;at&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file://d:\Temp\namespace\Debug\BuildLog.htm</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;error(s),&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;warning(s)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">==========</span><span style="COLOR: #000000">&nbsp;Build:&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;succeeded,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;failed,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;up</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">to</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">date,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;skipped&nbsp;</span><span style="COLOR: #000000">==========</span></div>
<br>&nbsp;&nbsp; 这个错误是典型的引用顺序引起的，修改main.cpp中的#include顺序可以编译成功。<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"><span style="COLOR: red"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;"nameA.h"<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;"classA.h"<br></span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>int&nbsp;main()<br><img id=Codehighlighter1_51_67_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_67_Open_Text.style.display='none'; Codehighlighter1_51_67_Closed_Image.style.display='inline'; Codehighlighter1_51_67_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_67_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_67_Closed_Text.style.display='none'; Codehighlighter1_51_67_Open_Image.style.display='inline'; Codehighlighter1_51_67_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><img src="http://www.cppblog.com/Images/dot.gif">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></div>
<br>&nbsp;&nbsp;&nbsp; 或者在classA.h中删除对nameA.h的引用也可。<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">#ifndef&nbsp;__CLASSA_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__CLASSA_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#include&nbsp;"nameA.h"</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CA<br><img id=Codehighlighter1_93_161_Open_Image onclick="this.style.display='none'; Codehighlighter1_93_161_Open_Text.style.display='none'; Codehighlighter1_93_161_Closed_Image.style.display='inline'; Codehighlighter1_93_161_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_93_161_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_93_161_Closed_Text.style.display='none'; Codehighlighter1_93_161_Open_Image.style.display='inline'; Codehighlighter1_93_161_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_93_161_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_93_161_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TVector;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_158_159_Open_Image onclick="this.style.display='none'; Codehighlighter1_158_159_Open_Text.style.display='none'; Codehighlighter1_158_159_Closed_Image.style.display='inline'; Codehighlighter1_158_159_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_158_159_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_158_159_Closed_Text.style.display='none'; Codehighlighter1_158_159_Open_Image.style.display='inline'; Codehighlighter1_158_159_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CA()&nbsp;</span><span id=Codehighlighter1_158_159_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_158_159_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span></div>
<br><br>&nbsp;&nbsp; OK,现在问题如下，若classA.h需要引用nameA.h时，该如何解决这个问题？<br><br>&nbsp;&nbsp; classA.h如下所示时。<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">#ifndef&nbsp;__CLASSA_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__CLASSA_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">nameA.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CA<br><img id=Codehighlighter1_91_163_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_163_Open_Text.style.display='none'; Codehighlighter1_91_163_Closed_Image.style.display='inline'; Codehighlighter1_91_163_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_91_163_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_163_Closed_Text.style.display='none'; Codehighlighter1_91_163_Open_Image.style.display='inline'; Codehighlighter1_91_163_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_91_163_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_91_163_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: red">NA::INT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TVector;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_160_161_Open_Image onclick="this.style.display='none'; Codehighlighter1_160_161_Open_Text.style.display='none'; Codehighlighter1_160_161_Closed_Image.style.display='inline'; Codehighlighter1_160_161_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_160_161_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_160_161_Closed_Text.style.display='none'; Codehighlighter1_160_161_Open_Image.style.display='inline'; Codehighlighter1_160_161_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CA()&nbsp;</span><span id=Codehighlighter1_160_161_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_160_161_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span></div>
<br><br><img src ="http://www.cppblog.com/codejie/aggbug/117646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-06-11 17:03 <a href="http://www.cppblog.com/codejie/archive/2010/06/11/117646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：编码“疯”格－－“代码洁癖”及其“代价”有感</title><link>http://www.cppblog.com/codejie/archive/2010/06/09/117486.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 09 Jun 2010 10:31:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/06/09/117486.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/117486.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/06/09/117486.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/117486.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/117486.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 咋说呢，我不是一个完美的人，这个我非常肯定；我写的代码也不是完美的代码，这个我也非常肯定，但，我是一个追求把代码写的完美的人。。。<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; &#8216;完美&#8217;的定义是跟每个人的&#8216;审美观&#8217;相关的。随便段代码来&#8216;展示&#8217;一下我的&#8216;审美观&#8217;。。。<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">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;DictID;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetDictID(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;str)<br><img id=Codehighlighter1_74_114_Open_Image onclick="this.style.display='none'; Codehighlighter1_74_114_Open_Text.style.display='none'; Codehighlighter1_74_114_Closed_Image.style.display='inline'; Codehighlighter1_74_114_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_74_114_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_74_114_Closed_Text.style.display='none'; Codehighlighter1_74_114_Open_Image.style.display='inline'; Codehighlighter1_74_114_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_74_114_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_74_114_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DictID&nbsp;tmp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">.<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;tmp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>&nbsp;&nbsp;&nbsp; 下面是&#8216;完美&#8217;后的代码：<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">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CDictConvObject<br><img id=Codehighlighter1_41_223_Open_Image onclick="this.style.display='none'; Codehighlighter1_41_223_Open_Text.style.display='none'; Codehighlighter1_41_223_Closed_Image.style.display='inline'; Codehighlighter1_41_223_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_41_223_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_41_223_Closed_Text.style.display='none'; Codehighlighter1_41_223_Open_Image.style.display='inline'; Codehighlighter1_41_223_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_41_223_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_41_223_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;DictID;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><img src="http://www.cppblog.com/Images/dot.gif"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetIDByTitle(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;title,&nbsp;DictID</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;id)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_149_216_Open_Image onclick="this.style.display='none'; Codehighlighter1_149_216_Open_Text.style.display='none'; Codehighlighter1_149_216_Closed_Image.style.display='inline'; Codehighlighter1_149_216_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_149_216_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_149_216_Closed_Text.style.display='none'; Codehighlighter1_149_216_Open_Image.style.display='inline'; Codehighlighter1_149_216_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_149_216_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_149_216_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(id&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;DICTID_INVALID)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><img src="http://www.cppblog.com/Images/dot.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<br>&nbsp;&nbsp;&nbsp; 这里我不解释、不评论为什么做这样&#8216;完美&#8217;修改，展示上面代码的目的只有一个－－&#8220;完美的代价&#8221;。<br>&nbsp;&nbsp;&nbsp; 心目中&#8220;易懂&#8221;、&#8220;遵规&#8221;、&#8220;开放&#8221;、&#8220;灵活&#8221;、&#8220;分离&#8221;（也许还有等等）的代码才是好的代码，因此在写代码时，尽量做的是&#8220;完美&#8221;些，再&#8220;完美&#8221;些。。。所以一般来说，我完成一段代码或者程序的时间分配为：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>40%思考－20%编码－15%调试－25%重构！<br></strong>&nbsp;&nbsp;&nbsp; 看出来了吗？完美的巨大代价－－时间的消耗！当然消耗应该还有体力的消耗－－一段代码可能会被写来改去，直至重写很多次。往往一个简单的功能，我会用一个或多个函数，甚至对象去实现，只是为了&#8220;完美&#8221;。。。这就是我写代码的&#8220;疯&#8221;格～～&nbsp; 我也知道自己有这方面的&#8220;偏执&#8221;症，简单说应该算是有较严重的&#8220;代码洁癖&#8221;。。。因此我尽量花费更多的时间去&#8220;思考&#8221;，以减少后期&#8220;重构&#8221;的时间。<br>&nbsp;&nbsp;&nbsp; 扯了这么多，就是想说，我又要重写LingosHook的一大大段代码。。。。为了让LingosHook摆脱Dict的限制，我在HTML解析的代码中增加了相应的直接HTML方式的Dict支持，一切都OK了，但。。。但重看代码时，我怎么都觉得根据Dict解析结果，和根据HTML解析Dict(不了解代码，这里是有点晕。。）应该是两个独立平等的对象，Dict结果解析时的不应该涉及HTML词典解析，两种需求（功能）不应该交叉的。。。于是，我添加了两个对象：SpecialDictParser和HtmlDictParser，独立存在与HTML解析过程中。。。唉，本来只是添加了不到100行代码且已经OK的功能，现在不仅要全新添加两对象的代码，还要修改原有HTML解析对象中的60%左右代码。。。疯了。。。幸运的是，由于原有词典结果解析的流程和模块设计比较合理，各个词典（Vicon，Langdao，Fundset）这次完全不用动，省去了一半的时间。。。<br>&nbsp;&nbsp;&nbsp; 所以，总的来说，要想&#8220;完美&#8221;而又没有&#8220;代价&#8221;，需要在动手前，更加&#8220;开放&#8221;、&#8220;周全&#8221;的&#8220;思考&#8221;。。。。<br><br><br><br>&lt;---头晕的分割线---&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;我知道上面的根本就看不懂，写的很混乱，那是因为－－添加了新的SpecialDictParser和HtmlDictParser对象以后，想到需要重写的代码时，我疯了。。。<br>&nbsp;&nbsp;&nbsp;<img src ="http://www.cppblog.com/codejie/aggbug/117486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-06-09 18:31 <a href="http://www.cppblog.com/codejie/archive/2010/06/09/117486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：近况</title><link>http://www.cppblog.com/codejie/archive/2010/06/08/117403.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 08 Jun 2010 14:07:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/06/08/117403.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/117403.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/06/08/117403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/117403.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/117403.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 近来LingosHook更新很慢，是因为比较忙，当然是工作了。。。（我就不说我的夜生活很丰富。。。）<br>&nbsp;&nbsp;&nbsp; 找到一个HTML分析重复的问题，就是Tidy和PreProcess两个过程有重复操作，导致Dict数据定位不准确，终于还是让我&#8216;想起来&#8217;了。。。这样下个版本应该快了～<br>&nbsp;&nbsp;&nbsp; 这里贴下HtmlDictParser对象，此对象用于分析HTML中的Dict数据，跟DictObject的区别是其只分析Dict本身数据，如ID，和单词数据外，不再像DictObject对象那样要分析具体词典结果数据。HtmlDictParser是LingosHook摆脱Dict限制的主要对象。<br><br>
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: rgb(204, 204, 204); width: 98%; word-break: break-all; padding-top: 4px; background-color: rgb(238, 238, 238); "><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="COLOR: #000000">#ifndef&nbsp;__HTMLDICTPARSER_H__<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;__HTMLDICTPARSER_H__</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wx/wx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DBAccess.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TinyHtmlParser.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;HtmlDictParser<br><img id="Codehighlighter1_189_2249_Open_Image" onclick="this.style.display='none'; Codehighlighter1_189_2249_Open_Text.style.display='none'; Codehighlighter1_189_2249_Closed_Image.style.display='inline'; Codehighlighter1_189_2249_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_189_2249_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_189_2249_Closed_Text.style.display='none'; Codehighlighter1_189_2249_Open_Image.style.display='inline'; Codehighlighter1_189_2249_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_189_2249_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_189_2249_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TDictConfig<br><img id="Codehighlighter1_211_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_258_Open_Text.style.display='none'; Codehighlighter1_211_258_Closed_Image.style.display='inline'; Codehighlighter1_211_258_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_211_258_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_211_258_Closed_Text.style.display='none'; Codehighlighter1_211_258_Open_Image.style.display='inline'; Codehighlighter1_211_258_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span id="Codehighlighter1_211_258_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_211_258_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_iLoadParam;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_iStoreParam;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">typedef&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,&nbsp;TDictConfig</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TDictConfigMap;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">index&nbsp;+&nbsp;config</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TDictInfo<br><img id="Codehighlighter1_347_437_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_437_Open_Text.style.display='none'; Codehighlighter1_347_437_Closed_Image.style.display='inline'; Codehighlighter1_347_437_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_347_437_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_437_Closed_Text.style.display='none'; Codehighlighter1_347_437_Open_Image.style.display='inline'; Codehighlighter1_347_437_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span id="Codehighlighter1_347_437_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_347_437_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;std::wstring&nbsp;m_strDictID;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;std::wstring&nbsp;m_strTitle;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;TDictConfig&nbsp;m_stConfig;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">typedef&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">std::wstring,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TDictIDMap;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">dictid&nbsp;+&nbsp;dictindex</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #000000">typedef&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,&nbsp;TDictInfo</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TDictIndexMap;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">dictindex&nbsp;+&nbsp;info</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CDictInfoObject<br><img id="Codehighlighter1_598_882_Open_Image" onclick="this.style.display='none'; Codehighlighter1_598_882_Open_Text.style.display='none'; Codehighlighter1_598_882_Closed_Image.style.display='inline'; Codehighlighter1_598_882_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_598_882_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_598_882_Closed_Text.style.display='none'; Codehighlighter1_598_882_Open_Image.style.display='inline'; Codehighlighter1_598_882_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span id="Codehighlighter1_598_882_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_598_882_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id="Codehighlighter1_630_631_Open_Image" onclick="this.style.display='none'; Codehighlighter1_630_631_Open_Text.style.display='none'; Codehighlighter1_630_631_Closed_Image.style.display='inline'; Codehighlighter1_630_631_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_630_631_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_630_631_Closed_Text.style.display='none'; Codehighlighter1_630_631_Open_Image.style.display='inline'; Codehighlighter1_630_631_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;CDictInfoObject()&nbsp;</span><span id="Codehighlighter1_630_631_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_630_631_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img id="Codehighlighter1_664_665_Open_Image" onclick="this.style.display='none'; Codehighlighter1_664_665_Open_Text.style.display='none'; Codehighlighter1_664_665_Closed_Image.style.display='inline'; Codehighlighter1_664_665_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_664_665_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_664_665_Closed_Text.style.display='none'; Codehighlighter1_664_665_Open_Image.style.display='inline'; Codehighlighter1_664_665_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">CDictInfoObject()&nbsp;</span><span id="Codehighlighter1_664_665_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_664_665_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Init(CDBAccess::TDatabase</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;db);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TDictInfo</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;info);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetDictIndex(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;id)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;TDictIDMap&nbsp;_mapDictID;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;TDictIndexMap&nbsp;_mapDictIndex;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TDictResult<br><img id="Codehighlighter1_905_972_Open_Image" onclick="this.style.display='none'; Codehighlighter1_905_972_Open_Text.style.display='none'; Codehighlighter1_905_972_Closed_Image.style.display='inline'; Codehighlighter1_905_972_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_905_972_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_905_972_Closed_Text.style.display='none'; Codehighlighter1_905_972_Open_Image.style.display='inline'; Codehighlighter1_905_972_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span id="Codehighlighter1_905_972_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_905_972_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_iDictIndex;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_iDictStart;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_iDictEnd;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">typedef&nbsp;std::vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">TDictResult</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TDictResultVector;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">typedef&nbsp;std::map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">std::wstring,&nbsp;TDictResultVector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;TDictResultMap;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CParser<br><img id="Codehighlighter1_1110_2245_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1110_2245_Open_Text.style.display='none'; Codehighlighter1_1110_2245_Closed_Image.style.display='inline'; Codehighlighter1_1110_2245_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1110_2245_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1110_2245_Closed_Text.style.display='none'; Codehighlighter1_1110_2245_Open_Image.style.display='inline'; Codehighlighter1_1110_2245_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span id="Codehighlighter1_1110_2245_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_1110_2245_Open_Text"><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id="Codehighlighter1_1134_1135_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1134_1135_Open_Text.style.display='none'; Codehighlighter1_1134_1135_Closed_Image.style.display='inline'; Codehighlighter1_1134_1135_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1134_1135_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1134_1135_Closed_Text.style.display='none'; Codehighlighter1_1134_1135_Open_Image.style.display='inline'; Codehighlighter1_1134_1135_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;CParser()&nbsp;</span><span id="Codehighlighter1_1134_1135_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_1134_1135_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img id="Codehighlighter1_1160_1161_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1160_1161_Open_Text.style.display='none'; Codehighlighter1_1160_1161_Closed_Image.style.display='inline'; Codehighlighter1_1160_1161_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1160_1161_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1160_1161_Closed_Text.style.display='none'; Codehighlighter1_1160_1161_Open_Image.style.display='inline'; Codehighlighter1_1160_1161_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">CParser()&nbsp;</span><span id="Codehighlighter1_1160_1161_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_1160_1161_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Init(CDBAccess::TDatabase</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;db);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ParserHTML(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;html,&nbsp;TDictResultVector</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;result);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ParserHTML(CDBAccess::TDatabase&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">db,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;dictid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;html,&nbsp;TinyHtmlParser::CDocumentObject</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;doc,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CElementObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;dict,&nbsp;TDictResultMap</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;result);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;SaveResult(CDBAccess::TDatabase</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;db,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;wordid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TDictResultMap</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;result);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetResult(CDBAccess::TDatabase</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;db,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;wordid,&nbsp;TDictResultMap</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;result);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;RemoveResult(CDBAccess::TDatabase</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;db,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;wordid);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GenHtmlResult(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TDictResultVector</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;vct,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;html,&nbsp;wxString</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;result)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;CheckDictHtml();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;UpdateDictInfo(CDBAccess::TDatabase&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">db,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;dictid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;html,&nbsp;TinyHtmlParser::CDocumentObject</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;doc,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;TinyHtmlParser::CElementObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;dict);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;UpdateDictInfo(CDBAccess::TDatabase&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">db,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;dictid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;title);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;CDictInfoObject&nbsp;_objDictInfo;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<br><img src ="http://www.cppblog.com/codejie/aggbug/117403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-06-08 22:07 <a href="http://www.cppblog.com/codejie/archive/2010/06/08/117403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：IE来了～</title><link>http://www.cppblog.com/codejie/archive/2010/05/21/116035.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 21 May 2010 09:39:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/05/21/116035.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/116035.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/05/21/116035.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/116035.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/116035.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; &#8216;店大欺人&#8217;这句话放在哪里都适用，浏览器市场亦是如此。IE当道，其它浏览器如若显示跟其不一致，往往会被打上&#8216;不标准&#8217;的烙记，也迫使HTML使用者不得不用IE来检测是否符合&#8216;标准&#8217;。真的很杯具，且不说IE自己定义了大量&#8216;不标准&#8217;的Tag，谁又能确定IE对标准的执行本身...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2010/05/21/116035.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/116035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-05-21 17:39 <a href="http://www.cppblog.com/codejie/archive/2010/05/21/116035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：自己造的轮子对路面要求太高了～</title><link>http://www.cppblog.com/codejie/archive/2010/05/12/115154.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 12 May 2010 10:06:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/05/12/115154.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/115154.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/05/12/115154.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/115154.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/115154.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 为了搞定HTML，这几天在学着用<a href="http://tidy.sourceforge.net/">Tidylib</a>，终于搞明白了，喜滋滋地合并到代码中一测试，傻眼了－－字符集问题。。。<br>&nbsp;&nbsp;&nbsp; Tidylib的输入流似乎只支持const char*, 因此不的不将std::wstring从&#8216;宽字节&#8217;转换为&#8216;多字节。转换了几次，时好时坏，搞到半夜才发现自己所用的几个测试HTML页面都各种包含着不同的字符集，于是字符集问题就出来了，也搞死我了～最后一咬牙，一跺脚，老子我不转了，都用&#8216;RAW&#8217;数据好了，&#8216;宽&#8217;到&#8216;多&#8217;直接用UTF8了。。。于是就有了下面的代码。<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: #0000ff">int</span><span style="COLOR: #000000">&nbsp;CHtmlTidyObject::Tidy(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;std::wstring&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">input,&nbsp;std::wstring&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">output)<br><img id=Codehighlighter1_75_2256_Open_Image onclick="this.style.display='none'; Codehighlighter1_75_2256_Open_Text.style.display='none'; Codehighlighter1_75_2256_Closed_Image.style.display='inline'; Codehighlighter1_75_2256_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_75_2256_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_75_2256_Closed_Text.style.display='none'; Codehighlighter1_75_2256_Open_Image.style.display='inline'; Codehighlighter1_75_2256_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_75_2256_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_75_2256_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;codepage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CP_UTF8;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">54936;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">CP_UTF8;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ret&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;TidyDoc&nbsp;tdoc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tidyCreate();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyMark,&nbsp;no)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetInt(tdoc,&nbsp;TidyDoctypeMode,&nbsp;TidyDoctypeOmit)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyHideComments,&nbsp;yes)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetInt(tdoc,&nbsp;TidyWrapLen,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">if(tidyOptSetBool(tdoc,&nbsp;TidyMakeClean,&nbsp;yes)&nbsp;!=&nbsp;yes)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">css<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyUpperCaseTags,&nbsp;yes)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyHtmlOut,&nbsp;yes)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidySetCharEncoding(tdoc,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">raw</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyShowWarnings,&nbsp;no)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetInt(tdoc,&nbsp;TidyShowErrors,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyOptSetBool(tdoc,&nbsp;TidyForceOutput,&nbsp;yes)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;yes)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;WideCharToMultiByte(codepage,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;input.c_str(),&nbsp;input.size(),&nbsp;NULL,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;NULL,&nbsp;NULL);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(sz&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;buf&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">[sz&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;WideCharToMultiByte(codepage,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;input.c_str(),&nbsp;input.size(),&nbsp;buf,&nbsp;sz,&nbsp;NULL,&nbsp;NULL);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyParseString(tdoc,&nbsp;buf)&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_1328_2193_Open_Image onclick="this.style.display='none'; Codehighlighter1_1328_2193_Open_Text.style.display='none'; Codehighlighter1_1328_2193_Closed_Image.style.display='inline'; Codehighlighter1_1328_2193_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1328_2193_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1328_2193_Closed_Text.style.display='none'; Codehighlighter1_1328_2193_Open_Image.style.display='inline'; Codehighlighter1_1328_2193_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1328_2193_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1328_2193_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">TidyBuffer&nbsp;errbuf&nbsp;=&nbsp;{0};<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">tidySetErrorBuffer(&nbsp;tdoc,&nbsp;&amp;errbuf&nbsp;);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidyCleanAndRepair(tdoc)&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_1462_2092_Open_Image onclick="this.style.display='none'; Codehighlighter1_1462_2092_Open_Text.style.display='none'; Codehighlighter1_1462_2092_Closed_Image.style.display='inline'; Codehighlighter1_1462_2092_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1462_2092_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1462_2092_Closed_Text.style.display='none'; Codehighlighter1_1462_2092_Open_Image.style.display='inline'; Codehighlighter1_1462_2092_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1462_2092_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1462_2092_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">tidyRunDiagnostics(&nbsp;tdoc&nbsp;);&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1540_1544_Open_Image onclick="this.style.display='none'; Codehighlighter1_1540_1544_Open_Text.style.display='none'; Codehighlighter1_1540_1544_Closed_Image.style.display='inline'; Codehighlighter1_1540_1544_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1540_1544_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1540_1544_Closed_Text.style.display='none'; Codehighlighter1_1540_1544_Open_Image.style.display='inline'; Codehighlighter1_1540_1544_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TidyBuffer&nbsp;outbuf&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_1540_1544_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1540_1544_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tidySaveBuffer(tdoc,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">outbuf)&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_1610_2048_Open_Image onclick="this.style.display='none'; Codehighlighter1_1610_2048_Open_Text.style.display='none'; Codehighlighter1_1610_2048_Closed_Image.style.display='inline'; Codehighlighter1_1610_2048_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1610_2048_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1610_2048_Closed_Text.style.display='none'; Codehighlighter1_1610_2048_Open_Image.style.display='inline'; Codehighlighter1_1610_2048_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1610_2048_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1610_2048_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">std::cout&nbsp;&lt;&lt;&nbsp;"OUTPUT-&gt;\n"&nbsp;&lt;&lt;&nbsp;outbuf.bp&nbsp;&lt;&lt;&nbsp;std::endl;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;wsz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MultiByteToWideChar(codepage,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)outbuf.bp,&nbsp;outbuf.size,&nbsp;NULL,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;wbuf&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;wchar_t[wsz&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wsz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MultiByteToWideChar(codepage,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)outbuf.bp,&nbsp;outbuf.size,&nbsp;wbuf,&nbsp;wsz);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wbuf;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;wbuf;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tidyBufFree(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">outbuf);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">std::cout&nbsp;&lt;&lt;&nbsp;"ERROR-&gt;\n"&nbsp;&lt;&lt;&nbsp;errbuf.bp&nbsp;&lt;&lt;&nbsp;std::endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">tidyBufFree(&amp;errbuf);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;buf;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tidyRelease(tdoc);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;ret;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>&nbsp;&nbsp;&nbsp; 感觉还有问题，但经过Tidy处理，TinyHtmlParser确实能解析原来解不开的HTML数据了，就先放着吧，测试看看先～唉，HTML从头到尾都是最影响LingosHook的部分，早知道应该多好好找找稳定的Parser，自己造的轮子对路面要求太高了。。。<img src ="http://www.cppblog.com/codejie/aggbug/115154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-05-12 18:06 <a href="http://www.cppblog.com/codejie/archive/2010/05/12/115154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook ：Open Source!</title><link>http://www.cppblog.com/codejie/archive/2010/04/29/113969.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 29 Apr 2010 12:32:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/04/29/113969.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/113969.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/04/29/113969.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/113969.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/113969.html</trackback:ping><description><![CDATA[<p><br>&nbsp;&nbsp;&nbsp; LingosHook名字来自<a href="http://www.lingoes.cn/">Lingoes</a>及其所采用的Hook方式，至于为什么不是LingoesHook，理由很简单－－拼写错了～这也是其编写的缘由－－我记忆单词的能力差的可怜，因此不得不一次次去记忆同一个单词，但众所周知的情况，Lingoes没有生词本，因此基于&#8220;轮子精神&#8221;，我便开始编写LingosHook，直至今日～<br></p>
<p>&nbsp;&nbsp;&nbsp; 就像曾经提到的，当我把自己挖的窟窿都补上时，LingosHook就会Open Source了。现在就是这个时刻了！敬请访问如下地址，获取LingosHook的Source。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://code.google.com/p/lingoshook">http://code.google.com/p/lingoshook</a><br>&nbsp;&nbsp;&nbsp; 或者<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://lingoshook.googlecode.com/">http://lingoshook.googlecode.com</a><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 这里希望各位有兴趣或者需求的同好们，一起动手，使的LingosHook能够更完善、更实用。<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; 我当前的工作分支是1.0.000，通过SVN访问如下连接获取当前版本源码。</p>
<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">svn&nbsp;checkout&nbsp;https://lingoshook.googlecode.com/svn/branches/1.0.000/<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; <br></p><img src ="http://www.cppblog.com/codejie/aggbug/113969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-04-29 20:32 <a href="http://www.cppblog.com/codejie/archive/2010/04/29/113969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TinyHtmlParser:代码在手，天下我有</title><link>http://www.cppblog.com/codejie/archive/2010/04/08/111907.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 07 Apr 2010 16:03:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/04/08/111907.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/111907.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/04/08/111907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/111907.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/111907.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; 先看看下面这个HTML字符串。&lt;HTML&gt;=====&lt;SPARATOR&gt;s-value&lt;/SPARATOR&gt;++++++&lt;BODY&nbsp;A="AA"&gt;{123}&lt;BR&gt;[456]&lt;/BODY&gt;&lt;IMG&gt;*****&lt;/HTML&gt;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2010/04/08/111907.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/111907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-04-08 00:03 <a href="http://www.cppblog.com/codejie/archive/2010/04/08/111907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Memory Daily Preview</title><link>http://www.cppblog.com/codejie/archive/2010/04/01/111231.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 31 Mar 2010 16:28:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/04/01/111231.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/111231.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/04/01/111231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/111231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/111231.html</trackback:ping><description><![CDATA[<p><br>&nbsp;&nbsp;&nbsp; 昨天Memory Daily功能应该说就OK了，但到现在才把它融合到LingosHook中，原因很简单－－冲突。虽然添加TriggerObject作为Adapter解耦各对象，但TriggerObject设计不周，缺少&#8220;被触发事件&#8221;的来源数据等信息，导致有些地方触发起来会产生冲突。简单举个例子，删除一个单词，那么在Index和在MemoryDaily对象中删除应该触发一样的操作－－在数据库中、Tag、MemoryDaily对象、界面等中删除。但由于不同对象删除方式的不同，比如数据库和某些对象删除只需要ID，而在某些界面删除却需要Word本身，像ListBox对象。这样就导致了冲突的发生，不得不写两个OnWordRemove()触发函数，而且其中调用的流程还不一样，看起来非常不爽，再修改很容易犯错误的。想来，如果在触发时，能传递更多的信息，比如&#8220;触发源&#8221;等，这样仅需要一个OnWordRemove()，并在其内进行不同调用，应该就可以了。所以，TriggerObject中的函数修改一下可能比较好。<br></p><font style="BACKGROUND-COLOR: #c0c0c0">
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: rgb(204, 204, 204); width: 98%; word-break: break-all; padding-top: 4px; background-color: rgb(238, 238, 238); "><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OnWordRemove(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;worid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxString</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;wordid);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #000000">-----&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OnWordRemove(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;orig,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;worid,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;wxString</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;wordid);</span></div>
</font><br>&nbsp;&nbsp;&nbsp; 如果不是这个问题，今晚应该可以上传的，但现在只能明天再说了，因为怎么也要自己run一下试试啊。。。OK，今天先来个剧透吧，只上图，请各位猜猜MemoryDaily怎么用的，嘿嘿。。。<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lingoshook-md-2.png" border="0"><br><br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lingoshook-md-1.png" border="0"><img src ="http://www.cppblog.com/codejie/aggbug/111231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-04-01 00:28 <a href="http://www.cppblog.com/codejie/archive/2010/04/01/111231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>记录：关于wxLabel</title><link>http://www.cppblog.com/codejie/archive/2010/03/30/111066.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 30 Mar 2010 14:59:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/03/30/111066.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/111066.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/03/30/111066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/111066.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/111066.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 使用wxLabel时，会有需要设置其左对齐或者居中等Align属性，但发现如果中途使用了SetLebal()，会使其回复到默认设置，除非有WM_SIZE消息，这个很烦。弄了很久，终于找到，出来Align属性，还需要wxST_NO_AUTORESIZE参数的。<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">m_textMemWord&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;wxStaticText(m_noteIndex_pane_3,&nbsp;wxID_ANY,&nbsp;wxT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">No&nbsp;Word</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;wxDefaultPosition,&nbsp;wxDefaultSize,&nbsp;wxALIGN_CENTRE</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">wxST_NO_AUTORESIZE);</span></div><img src ="http://www.cppblog.com/codejie/aggbug/111066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-03-30 22:59 <a href="http://www.cppblog.com/codejie/archive/2010/03/30/111066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轮子精神：TinyHtmlParser更新</title><link>http://www.cppblog.com/codejie/archive/2010/03/26/110629.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 26 Mar 2010 15:58:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/03/26/110629.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/110629.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/03/26/110629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/110629.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/110629.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; Lingoes的在线词典结果显示利用了浏览器的一个特性－－持续显示，就是说对于浏览器来说，有多少HTML就显示多少，边显示边下载后续HTML。从使用的感觉上看，Lingoes显示结果时，会看到先本地词典结果，然后窗口变化显示在线词典结果；而从实现上看，就是先输出本地文件的HTML到浏览器，等在线词典的结果到达后再继续输出在线词典的HTML，于是就可以看到很多词...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2010/03/26/110629.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/110629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2010-03-26 23:58 <a href="http://www.cppblog.com/codejie/archive/2010/03/26/110629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>