﻿<?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-随笔分类-轮子精神</title><link>http://www.cppblog.com/codejie/category/12567.html</link><description>Using C++</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2015 15:55:38 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2015 15:55:38 GMT</pubDate><ttl>60</ttl><item><title>OpenCV : build with Glade on Android Studio</title><link>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 14 Apr 2015 15:54:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210337.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210337.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210337.html</trackback:ping><description><![CDATA[<br />FROM : <a href="http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool">http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool</a><br /><br /><br /><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">Android Studio 0.8.2+ and above, could easily import modules. Thanks to TGMCains answer, is simplified, by using Android Studio itself to import OpenCV as a module.</p><ol style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Download</strong>&nbsp;latest OpenCV sdk for Android from&nbsp;<a href="http://opencv.org/downloads.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">OpenCV.org</a>&nbsp;and decompress the zip file.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Import OpenCV to Android Studio</strong>, From&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">File -&gt; Import Module</em>, choose&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">sdk/java</em>&nbsp;folder in the unzipped opencv archive.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Update build.gradle</strong>&nbsp;under imported OpenCV module to update 4 fields to match your project build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion and 4) targetSdkVersion.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Add module dependency</strong>&nbsp;by&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Application -&gt; Module Settings</em>, and select the&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Dependencies</em>tab. Click&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">+</em>&nbsp;icon at bottom, choose&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Module Dependency</em>&nbsp;and select the imported OpenCV module.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Copy&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">libs</em></strong>&nbsp;folder under&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">sdk/native</em>&nbsp;to Android Studio under&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">app/src/main</em>.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">In Android Studio,&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px;">rename the copied&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">libs</em>&nbsp;directory to&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">jniLibs</em></strong>&nbsp;and we are done.</li></ol><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">Step (6) is since Android studio expects native libs in&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">app/src/main/jniLibs</code>&nbsp;instead of older&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">libs</code>&nbsp;folder. For those new to Android OpenCV, don't miss below steps</p><ul style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">include&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">static{ System.loadLibrary("opencv_java"); }</code></li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">For step(5), if you ignore any platform libs like x86, make sure your device/emulator is not on that platform.</li></ul><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">OpenCV written is in C/C++. Java wrappers are</p><ol style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="http://opencv.org/platforms/android.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">Android OpenCV SDK</a></strong>&nbsp;- OpenCV.org maintained Android Java wrapper. I suggest this one.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="http://opencv.org/opencv-java-api.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">OpenCV Java</a></strong>&nbsp;- OpenCV.org maintained auto generated desktop Java wrapper.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="https://github.com/bytedeco/javacv" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">JavaCV</a></strong>&nbsp;- Popular Java wrapper maintained by independent developer(s). Not Android specific. This library&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">might</em>&nbsp;get out of sync with OpenCV newer versions.</li></ol><img src ="http://www.cppblog.com/codejie/aggbug/210337.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-04-14 23:54 <a href="http://www.cppblog.com/codejie/archive/2015/04/14/210337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPRING : Handle JSON and Image object in One Request</title><link>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 13 Apr 2015 15:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210331.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210331.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210331.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 代码这里~<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 />-->&nbsp; &nbsp; @RequestMapping(value&nbsp;=&nbsp;"/req",&nbsp;method&nbsp;=&nbsp;RequestMethod.POST)<br />&nbsp;&nbsp;&nbsp;&nbsp;@ResponseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ResponseEntity&lt;Post.Response&gt;&nbsp;post(HttpServletRequest&nbsp;request)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Post.Response&nbsp;resp&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Post.Request&nbsp;req&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;file&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonsMultipartResolver&nbsp;multipartResolver&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CommonsMultipartResolver(request.getSession().getServletContext());&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(multipartResolver.isMultipart(request))&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MultipartHttpServletRequest&nbsp;multiRequest&nbsp;=&nbsp;(MultipartHttpServletRequest)&nbsp;request;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection&lt;Part&gt;&nbsp;parts&nbsp;=&nbsp;multiRequest.getParts();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;hasJSON&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;hasFile&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">final</span>&nbsp;Part&nbsp;p&nbsp;:&nbsp;parts)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(hasJSON)&nbsp;{<br />&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 style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p.getContentType().contains("application/json"))&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectMapper&nbsp;mapper&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ObjectMapper();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;=&nbsp;mapper.readValue(p.getInputStream(),&nbsp;Post.Request.<span style="color: #0000FF; ">class</span>);<br />&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 />&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 style="color: #0000FF; ">if</span>&nbsp;(req&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Post.Response();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp.setX(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasJSON&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;<br />&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 /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p.getContentType().contains("image/jpeg"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;index;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;UPLOAD_ROOT&nbsp;+&nbsp;String.valueOf(index)&nbsp;+&nbsp;".jpg";<br />&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;p.getInputStream();<br />&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;localFile&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;File(file);&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;FileOutputStream(localFile);<br />&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 style="color: #0000FF; ">int</span>&nbsp;bytesRead&nbsp;=&nbsp;0;<br />&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 style="color: #0000FF; ">byte</span>[]&nbsp;buffer&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">byte</span>[8192];<br />&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 style="color: #0000FF; ">while</span>&nbsp;((bytesRead&nbsp;=&nbsp;is.read(buffer,&nbsp;0,&nbsp;8192))&nbsp;!=&nbsp;-1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.write(buffer,&nbsp;0,&nbsp;bytesRead);<br />&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasFile&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(hasJSON&nbsp;&amp;&amp;&nbsp;hasFile)&nbsp;{<br />&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 style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(ServletException&nbsp;e1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(req&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;&amp;&amp;&nbsp;file&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;=&nbsp;calc.calc(req,&nbsp;file);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(resp&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ResponseEntity&lt;Post.Response&gt;(resp,&nbsp;HttpStatus.OK);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ResponseEntity&lt;Post.Response&gt;(resp,&nbsp;HttpStatus.BAD_REQUEST);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.cppblog.com/codejie/aggbug/210331.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-04-13 23:53 <a href="http://www.cppblog.com/codejie/archive/2015/04/13/210331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenCV : build with Maven on Spring</title><link>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 24 Mar 2015 14:13:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210154.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210154.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210154.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 为了赶时髦，准备把OpenCV的操作通过WebService的方式Deploy出去，因此做了如下的事情：<br /><br />&nbsp; &nbsp; 1. download<a href="http://opencv.org/"> opencv zip package</a>；<br />&nbsp; &nbsp; 2. download <a href="www.cmake.org/">cmake source zip</a>；<br />&nbsp; &nbsp; 3. download <a href="http://ant.apache.org/">ant binary package</a>；<br />&nbsp; &nbsp; 4. install ant binary;<br />&nbsp; &nbsp; 5. make cmake;<br />&nbsp; &nbsp; 6. unzip opencv;<br />&nbsp; &nbsp; 7. cmake opencv source;<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />#mkdir&nbsp;build<br />#cd&nbsp;build<br />#cmake&nbsp;-D&nbsp;BUILD_SHARED_LIBS=OFF&nbsp;../<br />#make</div><br />&nbsp; &nbsp; 8. install opencv library into Maven;<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->mvn&nbsp;install:install-file&nbsp;-Dfile=opencv-2411.jar&nbsp;-DgroupId=org.opencv&nbsp;-DartifaceId=opencv&nbsp;-Dversion=2.4.11&nbsp;-Dpackaging=jar</div><br />&nbsp; &nbsp; 9. update pom.xml to add openvn dependency;<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 />-->&nbsp; &nbsp;&nbsp;&lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.opencv&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;opencv&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.4.11&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;systemPath&gt;/Users/Jie/Downloads/opencv-2.4.11/build/bin/opencv-2411.jar&lt;/systemPath&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;scope&gt;system&lt;/scope&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dependency&gt;</div><br />&nbsp; &nbsp; 10. run webapp;<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 />-->mvn&nbsp;spring-boot:run</div><br />&nbsp; &nbsp; 11. done;<br /><br />&nbsp; &nbsp; 翻了无数++的页面，就这些~<br /><img src ="http://www.cppblog.com/codejie/aggbug/210154.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-03-24 22:13 <a href="http://www.cppblog.com/codejie/archive/2015/03/24/210154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RaspberryPi : Fetch data via BMP085 sensor</title><link>http://www.cppblog.com/codejie/archive/2013/10/15/203759.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 15 Oct 2013 15:41:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/10/15/203759.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/203759.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/10/15/203759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/203759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/203759.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 昨天吃了空, 拿出树莓派玩, 想试试用它放个高清碟是啥效果,结果悲剧的是高清碟没放出, 还把系统搞死了. 没法只好重装了系统, 也好, 就随便记录了下从BMP085上读取数据的整个过程.<br />
<br />
&nbsp; &nbsp; 因为咱对硬件不熟悉, 也就不罗嗦树莓派系统怎么启动, 传感器怎么连接等等问题了, 反正这些问题我全是google来的. 这里我从树莓派启动完成, BMP085连接完成开始说了.<br />
<br />
1. 激活I2C总线<br />
&nbsp; &nbsp; <a href="http://learn.adafruit.com/bmp085">BMP085传感器</a>使用的是I2C总线, 要想访问连接在上面的BMP085, 就必须先激活I2C总线, 因为默认情况下, 树莓派是关闭I2C总线的.<br />
&nbsp; &nbsp; a. 修改系统'模块黑名单'配置<br />
&nbsp; &nbsp; &nbsp; &nbsp; 如下命令, 将i2c总线从系统默认的黑名单中剔除<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 />-->pi@raspberrypi:~/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_BMP085$&nbsp;vi&nbsp;/etc/modprobe.d/raspi-blacklist.conf<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;blacklist&nbsp;spi&nbsp;and&nbsp;i2c&nbsp;by&nbsp;default&nbsp;(many&nbsp;users&nbsp;don't&nbsp;need&nbsp;them)</span><span style="color: #008000; "><br /></span><br />blacklist&nbsp;spi-bcm2708<br />blacklist&nbsp;i2c-bcm2708</div><br />&nbsp; &nbsp; &nbsp; &nbsp;注释掉i2c模块配置<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: #008000; ">#</span><span style="color: #008000; ">blacklist&nbsp;i2c-bcm2708</span></div>&nbsp; &nbsp;<br />&nbsp; &nbsp; b. 激活i2c总线<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">pi@raspberrypi:~$&nbsp;sudo&nbsp;modprobe&nbsp;i2c-dev</div>
<br />&nbsp; &nbsp; &nbsp; &nbsp; 重启后, 通过下列命令可以看到i2c总线已经激活,可以使用了.<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">
pi@raspberrypi:~$&nbsp;ls&nbsp;/dev/i2c*<br />
/dev/i2c-0&nbsp;&nbsp;/dev/i2c-1</div>
<br />&nbsp; &nbsp; &nbsp; &nbsp; 或者,<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 />-->pi@raspberrypi:~$&nbsp;sudo&nbsp;i2cdetect&nbsp;-l<br />i2c-0&nbsp;&nbsp;&nbsp;i2c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcm2708_i2c.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C&nbsp;adapter<br />i2c-1&nbsp;&nbsp;&nbsp;i2c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcm2708_i2c.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C&nbsp;adapter</div><br />&nbsp; &nbsp; &nbsp; &nbsp; 或者,<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 />-->pi@raspberrypi:~$&nbsp;sudo&nbsp;i2cdetect&nbsp;-y&nbsp;1&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;1&nbsp;&nbsp;2&nbsp;&nbsp;3&nbsp;&nbsp;4&nbsp;&nbsp;5&nbsp;&nbsp;6&nbsp;&nbsp;7&nbsp;&nbsp;8&nbsp;&nbsp;9&nbsp;&nbsp;a&nbsp;&nbsp;b&nbsp;&nbsp;c&nbsp;&nbsp;d&nbsp;&nbsp;e&nbsp;&nbsp;f<br />00:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />10:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />20:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />30:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />40:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />50:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />60:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;<br />70:&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;--&nbsp;77</div>&nbsp; &nbsp; 这里的77, 就是我们的BMP085了.(BMP085在I2C设备中的编号是0x77)<br />
<br />
&nbsp; &nbsp; 到此BMP085配置完成, 可以使用了. 但记得每次树莓派重启后, 都需要重新激活I2C总线, 要想偷懒, 那就在系统启动模块配置中添加I2C模块, 如下命令:<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 />-->pi@raspberrypi:~$&nbsp;sudo&nbsp;vi&nbsp;/etc/modules<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;/etc/modules:&nbsp;kernel&nbsp;modules&nbsp;to&nbsp;load&nbsp;at&nbsp;boot&nbsp;time.</span><span style="color: #008000; "><br />#<br />#</span><span style="color: #008000; ">&nbsp;This&nbsp;file&nbsp;contains&nbsp;the&nbsp;names&nbsp;of&nbsp;kernel&nbsp;modules&nbsp;that&nbsp;should&nbsp;be&nbsp;loaded</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;at&nbsp;boot&nbsp;time,&nbsp;one&nbsp;per&nbsp;line.&nbsp;Lines&nbsp;beginning&nbsp;with&nbsp;"#"&nbsp;are&nbsp;ignored.</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;Parameters&nbsp;can&nbsp;be&nbsp;specified&nbsp;after&nbsp;the&nbsp;module&nbsp;name.</span><span style="color: #008000; "><br /></span><br />snd-bcm2835<br />i2c-bcm2708<br />i2c-dev</div><div>&nbsp; &nbsp;当然, 你也可以将I2C激活命令添加到类似init.d或者rc.local中去.</div>
<br />
2. 安装I2C运行开发库<br />
&nbsp; &nbsp; 因为树莓派直接支持Python, 所以这里选择使用Python来读取BMP085数据.<br />
<br />
&nbsp; &nbsp; a.&nbsp;安装i2c-tools工具<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 />
-->sudo&nbsp;apt-get&nbsp;install&nbsp;i2c-tools</div>
<br />
&nbsp; &nbsp; b.安装python smbus库<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 />
-->sudo&nbsp;apt-get&nbsp;install&nbsp;python-smbus</div>
&nbsp; &nbsp; (这两步似乎可以不做. 最早我是安装了的, 但后来卸载了这两个可以, 依然可以读取的数据)<br />
<br />
&nbsp; &nbsp; c.&nbsp;下载/解压Adafruit库<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 />
-->wget&nbsp;http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/archive/master.zip<br />
unzip&nbsp;master.zip</div>
&nbsp; &nbsp; Adafruit库是一个使用Python实现I2C操作的库, 其中包括了多个I2C设备的代码, BMP085只是其支持的一个传感器.<br />
<br />
&nbsp; 到此, 就可以读取BMP085的数据了.<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 />
-->pi@raspberrypi:~/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_BMP085$&nbsp;sudo&nbsp;./Adafruit_BMP085_example.py&nbsp;<br />
Temperature:&nbsp;25.50&nbsp;C<br />
Pressure:&nbsp;&nbsp;&nbsp;&nbsp;1018.63&nbsp;hPa<br />
Altitude:&nbsp;&nbsp;&nbsp;&nbsp;-45.28</div><img src ="http://www.cppblog.com/codejie/aggbug/203759.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> 2013-10-15 23:41 <a href="http://www.cppblog.com/codejie/archive/2013/10/15/203759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL : About ContentProvider</title><link>http://www.cppblog.com/codejie/archive/2013/08/04/202327.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sat, 03 Aug 2013 16:29:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/08/04/202327.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/202327.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/08/04/202327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/202327.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/202327.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 本来EL的基本功能在周三已经完成了,打算开始准备EL所需要的数据进行实测了,但却出现个大麻烦,这两个晚上不得不进行大量的'重构'工作(实际就是因为前面偷懒,导致后面重写了)...<br />&nbsp; &nbsp; 先说下大麻烦的来由 -- EL需要两个数据库,一个在应用目录下,叫做lac2数据库;另外一个在sdcard上,叫做el数据库; 这样分开原因是因为el数据库是用户数据库,不想因为用户删除应用,或者重装系统(估计一周刷一次ROM的只有我吧..)而使其数据丢失. 起初想着两个数据库分别被UI和Service使用,并不存在交叉,没必要使用ContentProvider那么一大套框架,所以直接使用两个简单的SQLiteDatabase对象链接/访问各自的数据库了. &nbsp;<br />&nbsp; &nbsp; 现在说下麻烦 -- 随着EL的实现,有了一个不错的idea, 如果Service层可以使用el数据库,将可以增强一个功能, 于是很开心地在Service添加上了通过UI层对el数据库的访问接口;哈,问题来了 -- UI跟Service层是不一样的,是可以被Destroy的. 如果UI都被Destroy,那el数据库还访问个毛啊...<br />&nbsp; &nbsp; 于是在添加这个功能与重写数据库访问部分之间纠结了一晚之后,'毅然'决定'选择前者,'重构'后者了...反正这个跨层访问数据库资源早晚要面对的,总是使用cache和aidl接口访问只会让代码更加混乱.<br /><br />&nbsp; &nbsp; ContentProvider是个好东西,就像总有人说的一样,其在android的架子中与Activity,Intent等概念是在同一层的.通过与Uri, Resolver等的配合,使得app可以非常灵活和方便的访问数据. 实际都知道ContentProvider,但真写起来会发现要实现自己的ContentProvider,还是非常的'罗嗦'的..<br /><br />&nbsp; &nbsp; 现在EL实现了一个ContentProvider,贴在下面,供大家吐槽. 虽然还没有全部完成,但该有的基本元素都有了,还包括了一些'雕虫小技',比如 -- 咋使用'join'...<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 />--><span style="color: #008080; ">&nbsp; 1</span>&nbsp;<span style="color: #0000FF; ">package</span>&nbsp;jie.android.el.database;<br /><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.io.File;<br /><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.io.IOException;<br /><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.io.InputStream;<br /><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;jie.android.el.utils.AssetsHelper;<br /><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.content.ContentProvider;<br /><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.content.ContentUris;<br /><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.content.ContentValues;<br /><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.content.UriMatcher;<br /><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.database.Cursor;<br /><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.database.sqlite.SQLiteDatabase;<br /><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.net.Uri;<br /><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.os.Environment;<br /><span style="color: #008080; ">&nbsp;16</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;ELContentProvider&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;ContentProvider&nbsp;{<br /><span style="color: #008080; ">&nbsp;18</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;Tag&nbsp;=&nbsp;ELContentProvider.<span style="color: #0000FF; ">class</span>.getSimpleName();<br /><span style="color: #008080; ">&nbsp;20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;AUTHORITY&nbsp;=&nbsp;"jie.android.el";<br /><span style="color: #008080; ">&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;CONTENT_TYPE&nbsp;=&nbsp;"vnd.android.cursor.dir/vnd.jie.android.el";<br /><span style="color: #008080; ">&nbsp;23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;CONTENT_ITEM_TYPE&nbsp;=&nbsp;"vnd.android.cursor.item/vnd.jie.android.el";<br /><span style="color: #008080; ">&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_EL_ESL&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/el/esl");<br /><span style="color: #008080; ">&nbsp;26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_LAC_WORD_INFO&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/lac/word_info");<br /><span style="color: #008080; ">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_LAC_SYS_UPDATE&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/lac/sys_update");<br /><span style="color: #008080; ">&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_LAC_DICT_INFO&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/lac/dict_info");<br /><span style="color: #008080; ">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_LAC_WORD_INDEX_JOIN_INFO&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/lac/word_index_join_info");<br /><span style="color: #008080; ">&nbsp;30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Uri&nbsp;URI_LAC_BLOCK_INFO&nbsp;=&nbsp;Uri.parse("content://"&nbsp;+&nbsp;AUTHORITY&nbsp;+&nbsp;"/lac/block_info");<br /><span style="color: #008080; ">&nbsp;31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_EL_ESL&nbsp;=&nbsp;10;<br /><span style="color: #008080; ">&nbsp;33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_ITEM_EL_ESL&nbsp;=&nbsp;11;<br /><span style="color: #008080; ">&nbsp;34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_LAC_WORD_INFO&nbsp;=&nbsp;20;<br /><span style="color: #008080; ">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_ITEM_LAC_WORD_INFO&nbsp;=&nbsp;21;<br /><span style="color: #008080; ">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_LAC_SYS_UPDATE&nbsp;=&nbsp;30;<br /><span style="color: #008080; ">&nbsp;37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_LAC_DICT_INFO&nbsp;=&nbsp;40;<br /><span style="color: #008080; ">&nbsp;38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_LAC_WORD_INDEX_JOIN_INFO&nbsp;=&nbsp;50;<br /><span style="color: #008080; ">&nbsp;39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;MATCH_LAC_BLOCK_INFO&nbsp;=&nbsp;60;<br /><span style="color: #008080; ">&nbsp;40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;41</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;UriMatcher&nbsp;matcher&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;LACDBAccess&nbsp;lacDBAccess&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<span style="color: #008000; ">//</span><span style="color: #008000; ">should&nbsp;be&nbsp;a&nbsp;subclass&nbsp;of&nbsp;SQLiteOpenHelper&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;ELDBAccess&nbsp;elDBAccess&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;SQLiteDatabase&nbsp;db&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">&nbsp;49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;onCreate()&nbsp;{<br /><span style="color: #008080; ">&nbsp;50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initDatabases();<br /><span style="color: #008080; ">&nbsp;52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initMatcher();<br /><span style="color: #008080; ">&nbsp;53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br /><span style="color: #008080; ">&nbsp;55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;56</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">&nbsp;58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getType(Uri&nbsp;uri)&nbsp;{<br /><span style="color: #008080; ">&nbsp;59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;res&nbsp;=&nbsp;matcher.match(uri);<br /><span style="color: #008080; ">&nbsp;60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(res)&nbsp;{<br /><span style="color: #008080; ">&nbsp;61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_EL_ESL:<br /><span style="color: #008080; ">&nbsp;62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_WORD_INFO:<br /><span style="color: #008080; ">&nbsp;63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_SYS_UPDATE:<br /><span style="color: #008080; ">&nbsp;64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_DICT_INFO:<br /><span style="color: #008080; ">&nbsp;65</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_WORD_INDEX_JOIN_INFO:<br /><span style="color: #008080; ">&nbsp;66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_BLOCK_INFO:<br /><span style="color: #008080; ">&nbsp;67</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;CONTENT_TYPE;<br /><span style="color: #008080; ">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL:<br /><span style="color: #008080; ">&nbsp;69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_LAC_WORD_INFO:<br /><span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;CONTENT_ITEM_TYPE;<br /><span style="color: #008080; ">&nbsp;71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">default</span>:<br /><span style="color: #008080; ">&nbsp;72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IllegalArgumentException("Unknown&nbsp;uri:&nbsp;"&nbsp;+&nbsp;uri);&nbsp;<br /><span style="color: #008080; ">&nbsp;73</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;76</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">&nbsp;77</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Uri&nbsp;insert(Uri&nbsp;uri,&nbsp;ContentValues&nbsp;values)&nbsp;{<br /><span style="color: #008080; ">&nbsp;78</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;res&nbsp;=&nbsp;matcher.match(uri);<br /><span style="color: #008080; ">&nbsp;79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;80</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;table&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;81</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(res)&nbsp;{<br /><span style="color: #008080; ">&nbsp;83</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_SYS_UPDATE:<br /><span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getWritableDatabase();<br /><span style="color: #008080; ">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"sys_update";<br /><span style="color: #008080; ">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">&nbsp;87</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">default</span>:<br /><span style="color: #008080; ">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IllegalArgumentException("insert()&nbsp;Unknown&nbsp;uri:&nbsp;"&nbsp;+&nbsp;uri);<br /><span style="color: #008080; ">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;90</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;rowid&nbsp;=&nbsp;db.insert(table,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;values);<br /><span style="color: #008080; ">&nbsp;92</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ContentUris.withAppendedId(uri,&nbsp;rowid);<br /><span style="color: #008080; ">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;94</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Cursor&nbsp;query(Uri&nbsp;uri,&nbsp;String[]&nbsp;projection,&nbsp;String&nbsp;selection,&nbsp;String[]&nbsp;selectionArgs,&nbsp;String&nbsp;sortOrder)&nbsp;{<br /><span style="color: #008080; ">&nbsp;97</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;res&nbsp;=&nbsp;matcher.match(uri);<br /><span style="color: #008080; ">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;table&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;99</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(res)&nbsp;{<br /><span style="color: #008080; ">100</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_EL_ESL:<br /><span style="color: #008080; ">101</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL:<br /><span style="color: #008080; ">102</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;elDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">103</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"esl";<br /><span style="color: #008080; ">104</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">105</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(res&nbsp;==&nbsp;MATCH_ITEM_EL_ESL)&nbsp;{<br /><span style="color: #008080; ">106</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;"idx=?";&nbsp;&nbsp;<br /><span style="color: #008080; ">107</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectionArgs&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String[]{String.valueOf(ContentUris.parseId(uri))};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">108</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">109</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">110</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_WORD_INFO:<br /><span style="color: #008080; ">111</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_LAC_WORD_INFO:<br /><span style="color: #008080; ">112</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">113</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"word_info";<br /><span style="color: #008080; ">114</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">115</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(res&nbsp;==&nbsp;MATCH_ITEM_LAC_WORD_INFO)&nbsp;{<br /><span style="color: #008080; ">116</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;"idx=?";&nbsp;&nbsp;<br /><span style="color: #008080; ">117</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectionArgs&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String[]{String.valueOf(ContentUris.parseId(uri))};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">118</span>&nbsp;&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 /><span style="color: #008080; ">119</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">120</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_SYS_UPDATE:<br /><span style="color: #008080; ">121</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">122</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"sys_update";<br /><span style="color: #008080; ">123</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">124</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_DICT_INFO:<br /><span style="color: #008080; ">125</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">126</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"dict_info";<br /><span style="color: #008080; ">127</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">128</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_WORD_INDEX_JOIN_INFO:<br /><span style="color: #008080; ">129</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">130</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"word_index_100&nbsp;inner&nbsp;join&nbsp;word_info&nbsp;on&nbsp;(word_index_100.word_idx=word_info.idx)";<br /><span style="color: #008080; ">131</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">132</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_BLOCK_INFO:<br /><span style="color: #008080; ">133</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getReadableDatabase();<br /><span style="color: #008080; ">134</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"block_info_100";<br /><span style="color: #008080; ">135</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">136</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">default</span>:<br /><span style="color: #008080; ">137</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IllegalArgumentException("query()&nbsp;Unknown&nbsp;uri:&nbsp;"&nbsp;+&nbsp;uri);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">138</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">139</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">140</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;db.query(table,&nbsp;projection,&nbsp;selection,&nbsp;selectionArgs,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;sortOrder);<br /><span style="color: #008080; ">141</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">142</span>&nbsp;<br /><span style="color: #008080; ">143</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">144</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;update(Uri&nbsp;uri,&nbsp;ContentValues&nbsp;values,&nbsp;String&nbsp;selection,&nbsp;String[]&nbsp;selectionArgs)&nbsp;{<br /><span style="color: #008080; ">145</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;res&nbsp;=&nbsp;matcher.match(uri);<br /><span style="color: #008080; ">146</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;table&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">147</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(res)&nbsp;{<br /><span style="color: #008080; ">148</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_LAC_SYS_UPDATE:<br /><span style="color: #008080; ">149</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;lacDBAccess.getWritableDatabase();<br /><span style="color: #008080; ">150</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"sys_update";<br /><span style="color: #008080; ">151</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br /><span style="color: #008080; ">152</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">default</span>:<br /><span style="color: #008080; ">153</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IllegalArgumentException("update()&nbsp;Unknown&nbsp;uri:&nbsp;"&nbsp;+&nbsp;uri);<br /><span style="color: #008080; ">154</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">155</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;db.update(table,&nbsp;values,&nbsp;selection,&nbsp;selectionArgs);<br /><span style="color: #008080; ">156</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">157</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">158</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">159</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;delete(Uri&nbsp;uri,&nbsp;String&nbsp;selection,&nbsp;String[]&nbsp;selectionArgs)&nbsp;{<br /><span style="color: #008080; ">160</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IllegalArgumentException("delete()&nbsp;Unknown&nbsp;uri:&nbsp;"&nbsp;+&nbsp;uri);<br /><span style="color: #008080; ">161</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">162</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">163</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;initMatcher()&nbsp;{<br /><span style="color: #008080; ">164</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;UriMatcher(UriMatcher.NO_MATCH);<br /><span style="color: #008080; ">165</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">166</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"el/esl",&nbsp;MATCH_EL_ESL);<br /><span style="color: #008080; ">167</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"el/esl/#",&nbsp;MATCH_ITEM_EL_ESL);<br /><span style="color: #008080; ">168</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/word_info",&nbsp;MATCH_LAC_WORD_INFO);<br /><span style="color: #008080; ">169</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/word_info/#",&nbsp;MATCH_ITEM_LAC_WORD_INFO);<br /><span style="color: #008080; ">170</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/sys_update",&nbsp;MATCH_LAC_SYS_UPDATE);<br /><span style="color: #008080; ">171</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/dict_info",&nbsp;MATCH_LAC_DICT_INFO);<br /><span style="color: #008080; ">172</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/word_index_join_info",&nbsp;MATCH_LAC_WORD_INDEX_JOIN_INFO);<br /><span style="color: #008080; ">173</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.addURI(AUTHORITY,&nbsp;"<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>/block_info",&nbsp;MATCH_LAC_BLOCK_INFO);<br /><span style="color: #008080; ">174</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">175</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">176</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;initDatabases()&nbsp;{<br /><span style="color: #008080; ">177</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">178</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkLACDatabase();<br /><span style="color: #008080; ">179</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">180</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;db&nbsp;=&nbsp;Environment.getExternalStorageDirectory()&nbsp;+&nbsp;ELDBAccess.DBFILE;<br /><span style="color: #008080; ">181</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elDBAccess&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ELDBAccess(<span style="color: #0000FF; ">this</span>.getContext(),&nbsp;db);<br /><span style="color: #008080; ">182</span>&nbsp;<br /><span style="color: #008080; ">183</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;getContext().getDatabasePath(LACDBAccess.DBFILE).getAbsolutePath();<br /><span style="color: #008080; ">184</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lacDBAccess&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;LACDBAccess(<span style="color: #0000FF; ">this</span>.getContext(),&nbsp;db);<br /><span style="color: #008080; ">185</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">186</span>&nbsp;<br /><span style="color: #008080; ">187</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;checkLACDatabase()&nbsp;{<br /><span style="color: #008080; ">188</span>&nbsp;<br /><span style="color: #008080; ">189</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;dbfile&nbsp;=&nbsp;getContext().getDatabasePath(LACDBAccess.DBFILE);<br /><span style="color: #008080; ">190</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!dbfile.exists())&nbsp;{<br /><span style="color: #008080; ">191</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;parent&nbsp;=&nbsp;dbfile.getParentFile();<br /><span style="color: #008080; ">192</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!parent.exists())&nbsp;{<br /><span style="color: #008080; ">193</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.mkdirs();<br /><span style="color: #008080; ">194</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">195</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">196</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;input;<br /><span style="color: #008080; ">197</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br /><span style="color: #008080; ">198</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;=&nbsp;getContext().getAssets().open("lac2.zip");<br /><span style="color: #008080; ">199</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AssetsHelper.UnzipTo(input,&nbsp;parent.getAbsolutePath(),&nbsp;<span style="color: #0000FF; ">null</span>);<br /><span style="color: #008080; ">200</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br /><span style="color: #008080; ">201</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">202</span>&nbsp;&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 /><span style="color: #008080; ">203</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">204</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">205</span>&nbsp;}<br /><span style="color: #008080; ">206</span>&nbsp;</div><br />&nbsp; &nbsp; ContentProvider框架非常的方便,使用时只要简单填充具体的数据操作皆可;但也有人认为其接口定义的不够灵活,比如在query()接口中,<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; ">public</span>&nbsp;Cursor&nbsp;query(Uri&nbsp;uri,&nbsp;String[]&nbsp;projection,&nbsp;String&nbsp;selection,&nbsp;String[]&nbsp;selectionArgs,&nbsp;String&nbsp;sortOrder)</div><br />&nbsp; &nbsp; 只有selection,sortOrder参数,如果需要'group by'操作怎么办? 再直接点,怎么通过ContentProvider接口传入个自定义的sql语句呢,像rawQuery()? 实际这些都可以搞定的 -- &nbsp;ContentProvider就是个接口封装,最终的访问还是需要SQLiteDatabase对象来完成,那么只要SQLiteDatabase可以实现的功能,就有办法通过ContentProvider传给SQLiteDatabase. 咋说呢, 多想想如何利用那个URI呀....<img src ="http://www.cppblog.com/codejie/aggbug/202327.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> 2013-08-04 00:29 <a href="http://www.cppblog.com/codejie/archive/2013/08/04/202327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL : I am a holy shit genius</title><link>http://www.cppblog.com/codejie/archive/2013/07/21/202016.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sun, 21 Jul 2013 15:34:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/07/21/202016.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/202016.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/07/21/202016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/202016.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/202016.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; EL (ESL in/with <a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>)设计上需要跟LAC一样,支持用户加载数据,这个是必须的,总不能一次打个将近一个G的apk包给人家吧...<br />&nbsp; &nbsp; 一直没想好如何实现这部分,想着也使用像当时LAC那样开启个HTTP的service,然后由用户上传数据的方式(<a href="http://www.cppblog.com/codejie/archive/2012/08/02/164888.html">详见这里</a>),总觉得不是很妥当,理由很多,比如,EL的数据跟LAC的不同,不是用户自定义的,都是封装好的包;每次30-40MB的数据让用户从邮件中接收,再打开个浏览器上传到应用中来,这,这需要多么宅的人才能搞得的啊...等等,等,这种方法有太多的缺陷了.<br />&nbsp; &nbsp; 其他方法也都想过了,但都都被自己否定了..例如,<br />&nbsp; &nbsp; 1. 使用app的内置购买通道?不错,简单,方便,但,但...咱就是一个person,那搞得起那么一大套东东呢?不现实啊;<br />&nbsp; &nbsp; 2. 使用现在的云概念?但,怎么让哪些云能支持咱自己分配用户呢?这样做咱不就成了个分包户,搞私有云了吗?这绝对要被人家封杀的;<br />&nbsp; &nbsp; 3. 使用公共网络文件夹?别,咱还想靠这个搞点零花钱呢...<br /><br />&nbsp; &nbsp;这问题想了好几天,每天边敲边想...就在十分钟前,也许是发烧烧坏了某根神经,突然就想起了这个方法来!灭哈哈...有时真觉得我TM就是一个天才啊...<br /><br />&nbsp; &nbsp;这法子对我有些难度,但想想实现起来应该不是问题,只是机会八月底前敲完EL的计划要拖拖了...<br /><br />&nbsp; &nbsp;啥法子,现在肯定不说了,不然...你懂的,零花钱没有了啊...等以后EL跟现在的LingosHook一样被人遗忘时...再说吧...为了不被骂,今天的帖子就不放到原创区了,低调低调,哇哈哈....(我就是有些激动,真的..)<br /><br /><br />&nbsp; &nbsp; 现在说正事,就当前面啥也没有啊...<br />&nbsp; &nbsp; android下的QQ想来很多人再用,但新版有个很讨厌的地方----乱弹消息!跟windows版一样,Y的QQ有事没事就弹出的对话框来!android没法弄个对话框,Y的就搞个什么'TX新闻'什么的,像好友消息一样闪啊,振动啊.很是恼人,尤其是我这种很少打开,一打开看见有消息,满心欢喜地想着自己还没有被朋友遗忘时,Y的竟然是'TX新闻'!!!<br />&nbsp; &nbsp; 这个也跟windows下的一样,没法关闭,为啥TX都做的这么大了,还跟流氓一样呢? 于是发挥自己动手的精神,打开QQ的数据文件,分析记录,删除,搞定!<br /><br />&nbsp; &nbsp; 方法是:<br />&nbsp; &nbsp; 1. 使用类似DDMS的工具(直接ADB也好,看你了..)将账户数据拷贝到本地来;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 数据库文件位于/data/data/com.tencent.mobileqq/databases/(qq号码).db<br />&nbsp; &nbsp; 2. 打开数据文件,找到'PublicAccountInfo'表,删除全部记录;<br />&nbsp; &nbsp; 3. 将修改后的数据文件上传并覆盖原文件;<br />&nbsp; &nbsp; 4. 重启QQ,搞定.<br /><br />&nbsp; &nbsp; 先说好,不知是QQ的bug还是就是这样,删除就加不回去了,只是现在这个版本是这样.<br />&nbsp; &nbsp;<br />&nbsp; &nbsp; 当然,一切的前提--首先,你得有权限访问到数据文件...嘿嘿,现在知道自己刷ROM的好处了吧...(这里是<a href="http://www.cppblog.com/codejie/archive/2013/02/01/197672.html">以前写的跟ROM权限修改</a>相关的一个帖子..)<br /><img src ="http://www.cppblog.com/codejie/aggbug/202016.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> 2013-07-21 23:34 <a href="http://www.cppblog.com/codejie/archive/2013/07/21/202016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : The secret of ld2</title><link>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 03 Dec 2012 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/195952.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/195952.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/195952.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 这几个晚上(周末除外)都在分解<a href="https://code.google.com/p/lingoes-extractor/">Lingoes-Extractor</a>作者的另外一个工程的代码, 同样是用于分析LD2文件的,但仅仅一个java文件就搞定了,对于我这样的JAVA初学者来说真是'太好了'...<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; 从第一次找到Extractor的代码起,我就一直很怀疑这位作者要不跟Lingoes有点关系,要不就是一位真正的破解大师...因为Extractor太完美了...代码不多,却非常清晰地标记并分解出了LD2的各个段的数据,以及数据间的关系...我的怀疑来自其对ld2文件格式的认识,每一段,每一个字节的意义都非常地准确地标示出来,更神奇的是那些'无从追踪'的魔数, 例如, 单词索引间隔固定为10, 14字节的索引数据块,等等...这些都是怎么推到出来的啊...<br />
<br />
&nbsp; &nbsp; 我对自己的怀疑更偏向于后者,因为通过查看作者的其他代码,其除了分解了ld2文件外,还包括其他多个词典的数据文件...(感到震惊的同学们,自己去围观吧...另,多说一句,googlecode.com是个好地方...)<br />
<br />
&nbsp; &nbsp; 我并不关心怀疑本身的答案, 因为我已经非常开心 --Extractor终让我有机会窥视到Lingoes的ld2文件的秘密...<br />
<br />
&nbsp; &nbsp; 贴段代码, 以'奖励'自己多夜的敲敲打打...(是我写的Java代码,表认真啊...)<br />
<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 />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;getData(<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;index)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RandomAccessFile&nbsp;file&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;RandomAccessFile("output.data",&nbsp;"r");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;ByteBuffer&nbsp;buf&nbsp;=&nbsp;ByteBuffer.allocate((<span style="color: #0000FF; ">int</span>)&nbsp;file.getChannel().size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.getChannel().read(buf);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.order(ByteOrder.LITTLE_ENDIAN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;offset&nbsp;=&nbsp;29;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;idx[]&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[6];<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getIndex(buf,&nbsp;offset&nbsp;*&nbsp;10,&nbsp;idx);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(idx[5]&nbsp;!=&nbsp;idx[1])&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("self&nbsp;xml&nbsp;=&nbsp;"&nbsp;+&nbsp;getXml(buf,&nbsp;idx[1],&nbsp;idx[5]&nbsp;-&nbsp;idx[1]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(idx[3]&nbsp;==&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("word&nbsp;=&nbsp;"&nbsp;+&nbsp;getWord(buf,&nbsp;idx[0],&nbsp;idx[4]&nbsp;-&nbsp;idx[0]));<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;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ref&nbsp;=&nbsp;idx[3];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;offsetword&nbsp;=&nbsp;idx[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;lenword&nbsp;=&nbsp;idx[4]&nbsp;-&nbsp;idx[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(ref&nbsp;--&nbsp;&gt;&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;=&nbsp;buf.getInt(lenInflatedWordsIndex&nbsp;+&nbsp;idx[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getIndex(buf,&nbsp;offset&nbsp;*&nbsp;10,&nbsp;idx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("ref("&nbsp;+&nbsp;offset&nbsp;+&nbsp;")&nbsp;xml&nbsp;=&nbsp;"&nbsp;+&nbsp;getXml(buf,&nbsp;idx[1],&nbsp;idx[5]&nbsp;-&nbsp;idx[1]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetword&nbsp;+=&nbsp;4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("word&nbsp;=&nbsp;"&nbsp;+&nbsp;getWord(buf,&nbsp;offsetword,&nbsp;lenword));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br /><br />&nbsp; &nbsp; 再整理几天,要能琢磨个LAC2直接使用ld2的法子来的话,那就又可以进一大步了啊...<img src ="http://www.cppblog.com/codejie/aggbug/195952.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-12-03 23:14 <a href="http://www.cppblog.com/codejie/archive/2012/12/03/195952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Using Python to generate database</title><link>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 01 Nov 2012 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/194150.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/194150.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/194150.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 是的,这两天我在玩Python!<br />
<br />
&nbsp; &nbsp; 为了给LAC添加内置的词典, 需要将通过Lingoes-Extractor解出的数据导入到LAC使用的Sqlite中. 这个过程并不复杂 -- 解开ld2文件数据输出每条记录到一个文本文件中,然后处理每一条记录导入到Sqlite中即可,要是用C++来实现,也就两个晚上的事情,但,但这次我又蛋疼了...<br />
<br />
&nbsp; &nbsp; 大约一个月前,工作中碰到一段Python脚本,对于我这样习惯C++的人来说,看类似Python脚本跟天书差不多了...虽然上半年看了几天Perl,但到今天也只记得名字了...<br />
&nbsp; &nbsp; 于是这次'痛定思痛',决定搞起一个脚本语言来.于是就有了这次蛋疼的事情 -- 用Python实现LD2到Sqlite的导入.<br />
<br />
&nbsp; &nbsp; 不多说,有兴趣的直接看Python脚本吧...<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"><img id="Code_Closed_Image_110105" onclick="this.style.display='none'; Code_Closed_Text_110105.style.display='none'; Code_Open_Image_110105.style.display='inline'; Code_Open_Text_110105.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110105" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110105.style.display='none'; Code_Closed_Image_110105.style.display='inline'; Code_Closed_Text_110105.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110105" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">htmlparser.py</span><span id="Code_Open_Text_110105" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br />
<span style="color: #0000FF; ">from</span>&nbsp;HTMLParser&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;HTMLParser<br />
<br />
<span style="color: #0000FF; ">class</span>&nbsp;MyParser(HTMLParser):<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;levelField&nbsp;=&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;levelInfo&nbsp;=&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">str&nbsp;=&nbsp;'abandon&nbsp;=&nbsp;&lt;C&gt;&lt;E&gt;abandons|abandoned|abandoning&lt;/E&gt;&lt;F&gt;&lt;H&gt;&lt;M&gt;a&#183;ban&#183;don&nbsp;||&nbsp;ə\'b&#230;ndən&lt;/M&gt;&lt;/H&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;n.&lt;/U&gt;&nbsp;&nbsp;放纵,&nbsp;放任;&nbsp;狂热&lt;/N&gt;&lt;/I&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;v.&lt;/U&gt;&nbsp;&nbsp;丢弃;&nbsp;中止,&nbsp;放弃;&nbsp;遗弃,&nbsp;抛弃;&nbsp;使放纵&lt;/N&gt;&lt;/I&gt;&lt;/F&gt;&lt;/C&gt;'</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_starttag(self,&nbsp;tag,&nbsp;attrs):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">c</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;0&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">content</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">e</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;1&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">extend</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">f</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field.append(DictField())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelField&nbsp;+=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'levelField&nbsp;=',&nbsp;self.levelField</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;2&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">field</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">l</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;3&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">link</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">m</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;4&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">symbol</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">i</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info.append(DictInfo())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;+=&nbsp;1<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'info&nbsp;==&nbsp;levelField&nbsp;=&nbsp;%s&nbsp;levelInfo&nbsp;=&nbsp;%s'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;5&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">info</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">n</span><span style="color: #800000; ">'</span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;6&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">meaning</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">u</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;7&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_endtag(self,&nbsp;tag):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">u</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;6&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">meaning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_data(self,&nbsp;data):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;self.levelField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.flag&nbsp;==&nbsp;1:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.extend.append(data)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;3:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].link&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;4:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].symbol&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;6:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;index&nbsp;=&nbsp;%d'&nbsp;%&nbsp;index</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info[index&nbsp;*&nbsp;5&nbsp;+&nbsp;self.levelInfo].meaning&nbsp;=&nbsp;data<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;levelField=%d&nbsp;levelInfo=%d'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;info:&nbsp;%s'&nbsp;%&nbsp;self.result.field[self.levelField].info[self.levelInfo]</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;7:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;index&nbsp;=&nbsp;%d'&nbsp;%&nbsp;index&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info[index&nbsp;*&nbsp;5&nbsp;+&nbsp;self.levelInfo].category&nbsp;=&nbsp;data<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;levelField=%d&nbsp;levelInfo=%d'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;info:&nbsp;%s'&nbsp;%&nbsp;self.result.field[self.levelField].info[self.levelInfo]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;parse(self,&nbsp;html,&nbsp;data):<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelField&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;-1&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.feed(html)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictInfo:<br />
&nbsp;&nbsp;&nbsp;&nbsp;category&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;meaning&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">[category&nbsp;=&nbsp;%s&nbsp;meaning&nbsp;=&nbsp;%s]</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.category,&nbsp;self.meaning)<br />
<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictField:<br />
&nbsp;&nbsp;&nbsp;&nbsp;symbol&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;link&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;[DictInfo()&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;range(0,25)]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">[symbol&nbsp;=&nbsp;%s&nbsp;|&nbsp;link&nbsp;=&nbsp;%s&nbsp;info&nbsp;=&nbsp;%s]</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.symbol,&nbsp;self.link,&nbsp;string.join(map(str,&nbsp;self.info)))<br />
&nbsp;<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictData:<br />
&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;extend&nbsp;=&nbsp;[]&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">stringlist</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;field&nbsp;=&nbsp;[]&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">word&nbsp;=&nbsp;%s&nbsp;extend&nbsp;=&nbsp;%s&nbsp;field&nbsp;=&nbsp;%s</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.word,&nbsp;string.join(map(str,&nbsp;self.extend)),&nbsp;string.join(map(str,&nbsp;self.field)))<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;parseHtml(html,&nbsp;output):<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser&nbsp;=&nbsp;MyParser()<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser.parse(html,&nbsp;output)<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser.close()<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;analyseLine(str,&nbsp;output):<br />
&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;=&nbsp;str.find(<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;=</span><span style="color: #800000; ">'</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;output.word&nbsp;=&nbsp;str[:pos]<br />
&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;=&nbsp;str[pos&nbsp;+&nbsp;3&nbsp;:]<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'html=',&nbsp;html</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;parseHtml(html,&nbsp;output)<br />
</span></div>
&nbsp; &nbsp; 这个实现了从解开后的ld2记录到内部数据的解析;<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"><img id="Code_Closed_Image_110311" onclick="this.style.display='none'; Code_Closed_Text_110311.style.display='none'; Code_Open_Image_110311.style.display='inline'; Code_Open_Text_110311.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110311" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110311.style.display='none'; Code_Closed_Image_110311.style.display='inline'; Code_Closed_Text_110311.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110311" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">data2xml.py</span><span id="Code_Open_Text_110311" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&lt;X&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;D&gt;dictid&lt;/D&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;E&gt;E1&lt;/E&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;E&gt;E2&lt;/E&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;S&gt;Symbol&lt;/S&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;L&gt;Link&lt;/L&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;S&gt;Symbol&lt;/S&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;L&gt;Link&lt;/L&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/X&gt;</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">def</span>&nbsp;addtag(list,&nbsp;stag,&nbsp;etag):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(list)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;list:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;stag&nbsp;+&nbsp;string.strip(data,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;etag<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addExtend(extend):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;addtag(extend,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;e&gt;</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/e&gt;</span><span style="color: #800000; ">'</span>)<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addInfo(info,&nbsp;index):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(info)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;info[index&nbsp;*&nbsp;5:(index&nbsp;+&nbsp;1)&nbsp;*&nbsp;5]:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.category&nbsp;==&nbsp;<span style="color: #800000; ">''</span>&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;i.meaning&nbsp;==&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;i&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.category&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;c&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(i.category,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/c&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.meaning&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;m&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(i.meaning,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/m&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/i&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addSubField(f,&nbsp;index):<br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;f.symbol&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;s&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;string.strip(f.symbol,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/s&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;f.link&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;l&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(f.link,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">/l&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;addInfo(f.info,&nbsp;index)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret&nbsp;<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addField(field):<br />
&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(field)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;f&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;f&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;field:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;addSubField(f,&nbsp;index)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;+=&nbsp;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/f&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;data2xml(data):<br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;x&gt;</span><span style="color: #800000; ">'</span>&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;d&gt;1&lt;/d&gt;</span><span style="color: #800000; ">'</span>&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;addExtend(data.extend)&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;addField(data.field)&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">&lt;/x&gt;</span><span style="color: #800000; ">"</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
<br />
</span></div>
&nbsp; &nbsp; 这个实现了从内部数据到指定xml字串的处理;(蛋疼啊,ld2本来的数据也是xml格式的...但为了展现我'高超'的python功底,自己又定义了一次格式...)<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"><img id="Code_Closed_Image_110528" onclick="this.style.display='none'; Code_Closed_Text_110528.style.display='none'; Code_Open_Image_110528.style.display='inline'; Code_Open_Text_110528.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110528" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110528.style.display='none'; Code_Closed_Image_110528.style.display='inline'; Code_Closed_Text_110528.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110528" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">dbaccess.py</span><span id="Code_Open_Text_110528" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;sqlite3&nbsp;as&nbsp;sqlite<br />
<span style="color: #0000FF; ">import</span>&nbsp;re<br />
<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;table_create(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;sql&nbsp;=&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Word&nbsp;(wordid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;word&nbsp;TEXT,&nbsp;flag&nbsp;INTEGER)</span><span style="color: #800000; ">'</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Src&nbsp;(srcid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;wordid&nbsp;INTEGER,&nbsp;fmt&nbsp;INTEGER,&nbsp;orig&nbsp;INTEGER,&nbsp;content&nbsp;TEXT)</span><span style="color: #800000; ">'</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Dict&nbsp;(dictid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;title&nbsp;TEXT)</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;s&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;sql:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(s)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;add_dict(conn,&nbsp;title):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Dict&nbsp;(title)&nbsp;VALUES&nbsp;(\</span><span style="color: #800000; ">'</span>%s\<span style="color: #800000; ">'</span><span style="color: #800000; ">)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;title)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;add_record(conn,&nbsp;word,&nbsp;record):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;sql.encode('string_scape')</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;("%s",1)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(word))<span style="color: #008000; ">#</span><span style="color: #008000; ">'INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;(\'%s\',1)'&nbsp;%&nbsp;(word))</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;record&nbsp;=&nbsp;record.replace(<span style="color: #800000; ">'</span><span style="color: #800000; ">\"</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">''</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Src&nbsp;(wordid,&nbsp;fmt,&nbsp;orig,&nbsp;content)&nbsp;VALUES&nbsp;(%d,&nbsp;3,&nbsp;1,&nbsp;"%s")</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(cursor.lastrowid,&nbsp;record))<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_create(dbfile):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;sqlite.connect(dbfile)<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_close(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_test(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;record&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">"1234"</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;record.replace(<span style="color: #800000; ">'</span><span style="color: #800000; ">\"</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">''</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;("%s",&nbsp;1)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(record))<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">######################################3</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">conn&nbsp;=&nbsp;db_create('../data/lac.db')</span><span style="color: #008000; "><br />
</span><br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">add_dict(conn,&nbsp;'test')</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">db_close(conn)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span></div>
&nbsp; &nbsp; 这个实现了相关的数据库功能,包括主要的创建,写入等;<br />
<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: #008000; ">#</span><span style="color: #008000; ">&nbsp;!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br /></span><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br /><span style="color: #0000FF; "><br />import</span>&nbsp;htmlparser<br />
<span style="color: #0000FF; ">import</span>&nbsp;data2xml<br />
<span style="color: #0000FF; ">import</span>&nbsp;dbaccess<br />
<br /><span style="color: #0000ff; ">def</span>&nbsp;main():<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;'test&nbsp;=&nbsp;&lt;c&gt;&lt;E&gt;1&lt;/E&gt;&lt;E&gt;2&lt;/E&gt;'</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;open(<span style="color: #800000; ">"</span><span style="color: #800000; ">../data/output.txt</span><span style="color: #800000; ">"</span>,&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">r</span><span style="color: #800000; ">"</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;dbaccess.db_create(<span style="color: #800000; ">"</span><span style="color: #800000; ">../data/lac.db3</span><span style="color: #800000; ">"</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.table_create(conn)<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.db_test(conn)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;return</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.add_dict(conn,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">Vicon&nbsp;English-Chinese(S)&nbsp;Dictionary</span><span style="color: #800000; ">'</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;file:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;line</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;htmlparser.DictData()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlparser.analyseLine(string.rstrip(line,&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span>),&nbsp;data)<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'data&nbsp;=====&nbsp;',&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp; &nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;data2xml.data2xml(data)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.add_record(conn,&nbsp;data.word,&nbsp;data2xml.data2xml(data))<br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.db_close(conn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.close()<br />
<br />
main()</div>
<br />&nbsp; &nbsp; 这个就是main入口了...<br /><br />&nbsp; &nbsp; 如何?俺写的Python脚本如何?要是俺跟你说,一个月前,我连Python都会拼错,现在却可以写出如此'长'的Python脚本来了...你是觉得我很猛,还是觉得Python佷简单呢...<br />
&nbsp; &nbsp; 虽然在编写Python脚本的时候,碰到了各种郁闷错误,各种坑爹的用法,但我还是满喜欢Python的,<a href="http://www.cppblog.com/codejie/archive/2012/02/29/166755.html">总比使用由那位获得两届IOCCC大奖的家伙创建的Perl的感觉</a>爽了很多很多啊....<br />
<br />
<br />&lt;---- 松口气的分割线 ----&gt;<br /><br />
&nbsp; &nbsp; 昨晚终于搞定了这最终的Python脚本,但测试的结果不是佷满意. 生成LAC的sqlite数据需要将近3个小时不说,这超过80MB的数据文件更加让人崩溃...不过总的来说,终于可以先暂时放下这个数据导入的问题,继续编写LAC了...<br /><br />&nbsp; &nbsp;这个月工作上有些变故,也一直难以静心敲字,到上周也算到过阶段了...终于可以放松下了...<br />
<br />
<br />
<br /><img src ="http://www.cppblog.com/codejie/aggbug/194150.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-11-01 11:28 <a href="http://www.cppblog.com/codejie/archive/2012/11/01/194150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轮子精神 : Would you like to setup a web service onto your Android phone?</title><link>http://www.cppblog.com/codejie/archive/2012/10/11/193192.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 11 Oct 2012 15:44:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/10/11/193192.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/193192.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/10/11/193192.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/193192.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/193192.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 还记得LAC提供的'远程导入'功能吗?就是那个通过HTTP导入数据的功能...忘记的<a href="http://www.cppblog.com/codejie/archive/2012/08/30/164888.html">看这里</a>.<br /><br />&nbsp; &nbsp; 我一直在想,要是在Android上装个Web Service,随便接入到哪的wifi上,然后跟人说--登录http://192.xxx.xxx.xxx,直接访问我的'移动'主页! 你觉得这样cool不cool啊...<br /><br />&nbsp; &nbsp; 嗯,我很有想法增强LAC的这个功能,并独立成为一个Web Service应用.你觉得如何?<img src ="http://www.cppblog.com/codejie/aggbug/193192.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-10-11 23:44 <a href="http://www.cppblog.com/codejie/archive/2012/10/11/193192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轮子精神 : CursorRefreshAdapter</title><link>http://www.cppblog.com/codejie/archive/2012/09/18/191173.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 18 Sep 2012 15:35:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/09/18/191173.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/191173.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/09/18/191173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/191173.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/191173.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 为配合<a href="http://www.cppblog.com/codejie/archive/2012/09/14/190565.html">RefreshListView</a>,还需要对应的Adapter,测试代码如下:<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"><img id="Code_Closed_Image_233530" onclick="this.style.display='none'; Code_Closed_Text_233530.style.display='none'; Code_Open_Image_233530.style.display='inline'; Code_Open_Text_233530.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_233530" style="display: none" onclick="this.style.display='none'; Code_Open_Text_233530.style.display='none'; Code_Closed_Image_233530.style.display='inline'; Code_Closed_Text_233530.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_233530" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">CursorRefreshAdapter</span><span id="Code_Open_Text_233530" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">package</span>&nbsp;jie.java.android.test_listview;<br /><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.util.ArrayList;<br /><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.content.Context;<br /><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.database.Cursor;<br /><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.view.LayoutInflater;<br /><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.view.View;<br /><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.view.ViewGroup;<br /><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.widget.BaseAdapter;<br /><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;android.widget.TextView;<br /><span style="color: #008080; ">&nbsp;12</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;CursorRefreshAdapter&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;BaseAdapter&nbsp;{<br /><span style="color: #008080; ">&nbsp;14</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;ArrayList&lt;DBAccess.Data&gt;&nbsp;array&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;DBAccess.Data&gt;();<br /><span style="color: #008080; ">&nbsp;16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Context&nbsp;context&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;DBAccess&nbsp;db&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Cursor&nbsp;cursor&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;maxRows&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;offset&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;23</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;condition&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;CursorRefreshAdapter(Context&nbsp;context,&nbsp;DBAccess&nbsp;db)&nbsp;{<br /><span style="color: #008080; ">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.context&nbsp;=&nbsp;context;<br /><span style="color: #008080; ">&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.db&nbsp;=&nbsp;db;<br /><span style="color: #008080; ">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /><span style="color: #008080; ">&nbsp;32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">protected</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;finalize()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Throwable&nbsp;{<br /><span style="color: #008080; ">&nbsp;33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(cursor&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="color: #008080; ">&nbsp;34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor.close();<br /><span style="color: #008080; ">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>.finalize();<br /><span style="color: #008080; ">&nbsp;37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getCount()&nbsp;{<br /><span style="color: #008080; ">&nbsp;40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;array.size();<br /><span style="color: #008080; ">&nbsp;42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;43</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Object&nbsp;getItem(<span style="color: #0000FF; ">int</span>&nbsp;index)&nbsp;{<br /><span style="color: #008080; ">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;array.get(index);<br /><span style="color: #008080; ">&nbsp;47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;48</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;getItemId(<span style="color: #0000FF; ">int</span>&nbsp;index)&nbsp;{<br /><span style="color: #008080; ">&nbsp;50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">&nbsp;52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;53</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;View&nbsp;getView(<span style="color: #0000FF; ">int</span>&nbsp;position,&nbsp;View&nbsp;convertView,&nbsp;ViewGroup&nbsp;parent)&nbsp;{<br /><span style="color: #008080; ">&nbsp;55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(convertView&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;56</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView&nbsp;=&nbsp;LayoutInflater.from(<span style="color: #0000FF; ">this</span>.context).inflate(android.R.layout.simple_list_item_2,&nbsp;parent,&nbsp;<span style="color: #0000FF; ">false</span>);<br /><span style="color: #008080; ">&nbsp;57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;v1&nbsp;=&nbsp;(TextView)&nbsp;convertView.findViewById(android.R.id.text1);<br /><span style="color: #008080; ">&nbsp;59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.setText(Integer.toString(array.get(position).id));<br /><span style="color: #008080; ">&nbsp;60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1&nbsp;=&nbsp;(TextView)&nbsp;convertView.findViewById(android.R.id.text2);<br /><span style="color: #008080; ">&nbsp;61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1.setText(array.get(position).value);<br /><span style="color: #008080; ">&nbsp;62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;convertView;<br /><span style="color: #008080; ">&nbsp;64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;65</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setMaxRows(<span style="color: #0000FF; ">int</span>&nbsp;max)&nbsp;{<br /><span style="color: #008080; ">&nbsp;67</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxRows&nbsp;=&nbsp;max;<br /><span style="color: #008080; ">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;load(<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;condition)&nbsp;{<br /><span style="color: #008080; ">&nbsp;71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(cursor&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="color: #008080; ">&nbsp;72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor.close();<br /><span style="color: #008080; ">&nbsp;73</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.condition&nbsp;=&nbsp;condition;<br /><span style="color: #008080; ">&nbsp;76</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;77</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">&nbsp;78</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;refresh();<br /><span style="color: #008080; ">&nbsp;80</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;81</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;refresh()&nbsp;{<br /><span style="color: #008080; ">&nbsp;83</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;db.getValue(<span style="color: #0000FF; ">this</span>.condition,&nbsp;offset,&nbsp;maxRows);<br /><span style="color: #008080; ">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(cursor&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)<br /><span style="color: #008080; ">&nbsp;87</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br /><span style="color: #008080; ">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(!cursor.moveToFirst())<br /><span style="color: #008080; ">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br /><span style="color: #008080; ">&nbsp;90</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(cursor.moveToNext())&nbsp;{<br /><span style="color: #008080; ">&nbsp;92</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array.add(<span style="color: #0000FF; ">new</span>&nbsp;DBAccess.Data(cursor.getInt(0),&nbsp;cursor.getString(1)));<br /><span style="color: #008080; ">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;94</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;+=&nbsp;cursor.getCount();<br /><span style="color: #008080; ">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;97</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.notifyDataSetChanged();<br /><span style="color: #008080; ">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;99</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;offset;<br /><span style="color: #008080; ">100</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">101</span>&nbsp;}<br /><span style="color: #008080; ">102</span>&nbsp;</span></div>
<br />
&nbsp; &nbsp; 再一次被如下错误撂倒...<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 />
-->java.lang.UnsupportedOperationException:&nbsp;addView(View,&nbsp;LayoutParams)&nbsp;is&nbsp;not&nbsp;supported&nbsp;in&nbsp;AdapterView</div>
<br />
&nbsp; &nbsp; 解决方法还是如下:<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 />
-->v&nbsp;=&nbsp;vi.inflate(R.layout.items_row,&nbsp;p);<br />
<br />
Add&nbsp;a&nbsp;<span style="color: #0000FF; ">false</span>&nbsp;third&nbsp;parameter&nbsp;to&nbsp;that&nbsp;call,&nbsp;and&nbsp;I&nbsp;think&nbsp;your&nbsp;problem&nbsp;will&nbsp;go&nbsp;away.&nbsp;The&nbsp;call&nbsp;should&nbsp;become:<br />
v&nbsp;=&nbsp;vi.inflate(R.layout.items_row,&nbsp;p,&nbsp;<span style="color: #0000FF; ">false</span>);</div>
<br />
&nbsp; &nbsp; 原始链接如下:<br />
<a href="http://stackoverflow.com/questions/2496698/android-custom-listadapter-extending-baseadapter-crashes-on-application-launch">http://stackoverflow.com/questions/2496698/android-custom-listadapter-extending-baseadapter-crashes-on-application-launch</a><br />
<br />
&nbsp; &nbsp; 唉,记忆力严重衰退啊...<br /><br />&nbsp; &nbsp; 另,近来比较忙,现在看来--LAC新版年底能出来就不错了...唉...困死了,睡觉去了...<img src ="http://www.cppblog.com/codejie/aggbug/191173.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-18 23:35 <a href="http://www.cppblog.com/codejie/archive/2012/09/18/191173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轮子精神 : RefreshListView</title><link>http://www.cppblog.com/codejie/archive/2012/09/14/190565.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 13 Sep 2012 16:04:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/09/14/190565.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/190565.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/09/14/190565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/190565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/190565.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; &nbsp; 新的LAC设想中需要一个类似IOS中的'Pull to Refresh ListView'功能,即是当ListView显示到最后一列时,向上拖动ListView将开始加载后续数据列,如下图所示:&nbsp; &nbsp;&nbsp; &nbsp; 一直以为Android应该自带了这个view,但翻了一下,竟然没有,至少API8中没有...赶紧google下,嗯,很多前人...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2012/09/14/190565.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/190565.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-14 00:04 <a href="http://www.cppblog.com/codejie/archive/2012/09/14/190565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : '记忆'算法</title><link>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 26 Jul 2012 14:55:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/185254.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/185254.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/185254.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 前天晚上检查LAC代码,总觉得其使用的'记忆'算法有问题,调试很久,火起,重新实现了一个...<br />
<br />
&nbsp; &nbsp; 所谓'记忆'算法,最著名的应该是那个什么'艾宾浩斯记忆曲线'了,可惜咱数学不好,没看懂,只好自己弄个简单的了...<br />
&nbsp; &nbsp; '记忆'算法由四个参数组合而成,很简单 -- 一个<strong>时间间隔</strong>参数乘以由<strong>前次分数</strong>,<strong>本次分数</strong>以及<strong>结果判定</strong>确定的三维坐标,即可获得<strong>下次时间</strong>.<br />
&nbsp; &nbsp; 三维坐标系如下:<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; ">float</span>&nbsp;rateTable[4][4]&nbsp;=&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.75f,&nbsp;0.80f,&nbsp;0.45f,&nbsp;0.17f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.50f,&nbsp;1.25f,&nbsp;0.55f,&nbsp;0.20f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.00f,&nbsp;0.80f,&nbsp;0.45f,&nbsp;0.20f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;0.80f,&nbsp;0.50f,&nbsp;0.30f,&nbsp;0.17f&nbsp;}<br />
};<br />
<br />
<span style="color: #0000FF; ">int</span>&nbsp;judgeTable[2][4]&nbsp;=&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;0,&nbsp;1,&nbsp;1,&nbsp;2&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;2,&nbsp;2,&nbsp;3,&nbsp;3&nbsp;}&nbsp;<br />
};</div>&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 计算方法简化如下:<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 />-->check&nbsp;=&nbsp;judgeTable[judge][preScore];<br />next&nbsp;=&nbsp;((last&nbsp;!=&nbsp;0)&nbsp;?&nbsp;(updated&nbsp;-&nbsp;last)&nbsp;:&nbsp;7)&nbsp;*&nbsp;rateTable[curScore][check]&nbsp;+&nbsp;updated&nbsp;+&nbsp;1;</div><br />&nbsp; &nbsp; 咱也不知道这个算法好不好,所有系数完全自己推倒杜撰的(该不该弄个专利去呢...),为了表达自己对'严谨科学态度'的敬意,做了如下测试,请看各位报表..<br /><br />&nbsp; &nbsp; 1. 假定某个单词从第一次就选择'认识',且判定为'正确'(意思是自己判定'认识'此单词的判断是正确的),那么此单词连续九次出现的时间以及两次间时间间隔趋势如下图所示: (X轴为单词出现是时间,Y轴为两次出现时间的间隔)<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-1.png" border="0" alt="" width="498" height="304" /><br /><br />&nbsp; &nbsp; 从图表中可以看出,一个'熟悉'的单词,出现的间隔会越来越长.这复合基本逻辑--熟悉的单词不用经常记忆.<br /><br />&nbsp; &nbsp; 2. 相反,假定某个单词起始为'熟悉',但在其后选择中,选择'没概念',且判定为'错误'(意思是自己确实对此单词'没概念',)(这里跟前面的解释一起理解时,有点乱...),那么此单词连续九次出现的 时间间隔趋势如下:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-2.png" border="0" alt="" width="500" height="311" /><br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 由上图可见,随着选择'没概念'的次数增加,单词出现的间隔不断变小,直至为1.<br /><br />&nbsp; &nbsp; 3. 下面趋势图显示了当一个单词每次都选择'熟悉',但判定依次为'正确'和'错误',连续九次出现后的时间间隔变化:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-3.png" border="0" alt="" width="496" height="303" /><br /><br />&nbsp; &nbsp; 4. 最后一个则是单词每次选择'没概念'但判定依次为'正确'和'错误'的时间间隔趋势图:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-4.png" border="0" alt="" width="496" height="303" /><br /><br /><br />&nbsp; &nbsp; '熟悉度'一共有4级,且有两个参数,加上'判定'参数的2级,三个参数组合起来的系数关系就是前面的两个数组,我是没敢测试每种组合的趋势,挑了上面四个最简单的可能,其他的大家有兴趣自己看吧...欢迎指点,欢迎拍砖,但不许打脸...<br /><br />&nbsp; &nbsp; &lt;---- 判定意思好混乱的分割线 ----&gt;<br /><br />&nbsp; &nbsp; 刚才突然想起一个好方法,可以屏蔽'判定'概念,这就去改...<img src ="http://www.cppblog.com/codejie/aggbug/185254.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-07-26 22:55 <a href="http://www.cppblog.com/codejie/archive/2012/07/26/185254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SavingKeeper: Release Three</title><link>http://www.cppblog.com/codejie/archive/2012/06/06/177808.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 06 Jun 2012 09:04:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/06/06/177808.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/177808.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/06/06/177808.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/177808.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/177808.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 不知道大家还记得<a href="http://www.cppblog.com/codejie/archive/2011/11/07/159521.html">SavignKeeper</a>不。。。<br />
&nbsp; &nbsp; 本来我都快忘记了，结果上两周了吧，LP突然说，怎么没有个下期金额呢。。。啥？！啊，你还在用啊。。。<br />
&nbsp; &nbsp; 好吧，有需求就有update。。。<br />
&nbsp; &nbsp; 1. 增加显示到期定期存单下次到期时的金额；（拗口啊。。）<br />
&nbsp; &nbsp; 2. 修正Date类型变量Bugs；（这Bug错的离谱啊。。。第一次使用Date.clone()，以前竟然不知道怎么拷贝赋值。。果然还是不会java。。）<br />
<br />
&nbsp; &nbsp; 上图了，还有跟LP一样&#8216;顽固&#8217;的使用者吗？请这里<a href="http://code.google.com/p/codejie/downloads/detail?name=SavingKeeper_r3.apk&amp;can=2&amp;q=">下载更新</a>。。。辛苦了。。。<br />
<br />
<img src="http://www.cppblog.com/images/cppblog_com/codejie/SavingKeeper/sk_1.png" border="0" alt="" /><br /><img src ="http://www.cppblog.com/codejie/aggbug/177808.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-06-06 17:04 <a href="http://www.cppblog.com/codejie/archive/2012/06/06/177808.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>LIBGDX: Multi-Touch</title><link>http://www.cppblog.com/codejie/archive/2011/06/17/148876.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 17 Jun 2011 09:59:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/06/17/148876.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/148876.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/06/17/148876.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/148876.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/148876.html</trackback:ping><description><![CDATA[<br />&nbsp;&nbsp;&nbsp; 忽然想起用libgdx有段时间了，但似乎没看到其是否支持&#8216;瞩目&#8217;的多点触屏，于是乘着空的时候，又翻了翻libgdx的API文档来，发现libgdx一直支持多点触屏的，只是封装的比较浅，加上api文档中就一句话，所以具体实现还需要自己来琢磨。<br />&nbsp;&nbsp;&nbsp; 今天没G7可用（实际一直没G7可用，长期被LP霸占，只有晚上偶尔可以试试，可怜啊。。。）看着API文档，猜测下面API的意思，然后写段测试，兴奋地用同事的G8做了测试，果然这样，甚是欢喜啊。。。 <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">touchDragged<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="" /></span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;touchDragged(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&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">int</span><span style="color: #000000">&nbsp;y,<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&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">int</span><span style="color: #000000">&nbsp;pointer)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />Called&nbsp;when&nbsp;a&nbsp;finger&nbsp;or&nbsp;the&nbsp;mouse&nbsp;was&nbsp;dragged.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />Parameters:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />x&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;The&nbsp;x&nbsp;coordinate<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />y&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;The&nbsp;y&nbsp;coordinate<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />pointer&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;the&nbsp;pointer&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;the&nbsp;event.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />Returns:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />whether&nbsp;the&nbsp;input&nbsp;was&nbsp;processed</span></div><br /><br />&nbsp;&nbsp;&nbsp; 这里是测试代码：<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 id="Codehighlighter1_56_962_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_962_Open_Text.style.display='none'; Codehighlighter1_56_962_Closed_Image.style.display='inline'; Codehighlighter1_56_962_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_56_962_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_56_962_Closed_Text.style.display='none'; Codehighlighter1_56_962_Open_Image.style.display='inline'; Codehighlighter1_56_962_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;touchDragged(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pointer)&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_56_962_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_56_962_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img id="Codehighlighter1_127_912_Open_Image" onclick="this.style.display='none'; Codehighlighter1_127_912_Open_Text.style.display='none'; Codehighlighter1_127_912_Closed_Image.style.display='inline'; Codehighlighter1_127_912_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_127_912_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_127_912_Closed_Text.style.display='none'; Codehighlighter1_127_912_Open_Image.style.display='inline'; Codehighlighter1_127_912_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(p0&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: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;p1&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="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_127_912_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_127_912_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_149_515_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_515_Open_Text.style.display='none'; Codehighlighter1_149_515_Closed_Image.style.display='inline'; Codehighlighter1_149_515_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_149_515_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_149_515_Closed_Text.style.display='none'; Codehighlighter1_149_515_Open_Image.style.display='inline'; Codehighlighter1_149_515_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pointer&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="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_149_515_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_149_515_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;</span><span style="color: #008000"><img id="Codehighlighter1_250_366_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_366_Open_Text.style.display='none'; Codehighlighter1_250_366_Closed_Image.style.display='inline'; Codehighlighter1_250_366_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_250_366_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_250_366_Closed_Text.style.display='none'; Codehighlighter1_250_366_Open_Image.style.display='inline'; Codehighlighter1_250_366_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></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">if</span><span style="color: #000000">(x0&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x1)&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_250_366_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_250_366_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x0&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;y0)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomOut();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x0&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y0)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomIn();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_389_510_Open_Image" onclick="this.style.display='none'; Codehighlighter1_389_510_Open_Text.style.display='none'; Codehighlighter1_389_510_Closed_Image.style.display='inline'; Codehighlighter1_389_510_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_389_510_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_389_510_Closed_Text.style.display='none'; Codehighlighter1_389_510_Open_Image.style.display='inline'; Codehighlighter1_389_510_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">(x0&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x1)&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_389_510_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_389_510_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x0&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;y0)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomIn();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x0&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y0)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomOut();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_542_908_Open_Image" onclick="this.style.display='none'; Codehighlighter1_542_908_Open_Text.style.display='none'; Codehighlighter1_542_908_Closed_Image.style.display='inline'; Codehighlighter1_542_908_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_542_908_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_542_908_Closed_Text.style.display='none'; Codehighlighter1_542_908_Open_Image.style.display='inline'; Codehighlighter1_542_908_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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">(pointer&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&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_542_908_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_542_908_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008000"><img id="Codehighlighter1_643_759_Open_Image" onclick="this.style.display='none'; Codehighlighter1_643_759_Open_Text.style.display='none'; Codehighlighter1_643_759_Closed_Image.style.display='inline'; Codehighlighter1_643_759_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_643_759_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_643_759_Closed_Text.style.display='none'; Codehighlighter1_643_759_Open_Image.style.display='inline'; Codehighlighter1_643_759_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></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">if</span><span style="color: #000000">(x0&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x1)&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_643_759_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_643_759_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x1&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;y1)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomIn();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x1&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y1)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomOut();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_782_903_Open_Image" onclick="this.style.display='none'; Codehighlighter1_782_903_Open_Text.style.display='none'; Codehighlighter1_782_903_Closed_Image.style.display='inline'; Codehighlighter1_782_903_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_782_903_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_782_903_Closed_Text.style.display='none'; Codehighlighter1_782_903_Open_Image.style.display='inline'; Codehighlighter1_782_903_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">(x0&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x1)&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_782_903_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_782_903_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;x1&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;y1)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomOut();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;x1&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;y1)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">this</span><span style="color: #000000">.moon.zoomIn();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">.touchDragged(x,&nbsp;y,&nbsp;pointer);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/148876.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-06-17 17:59 <a href="http://www.cppblog.com/codejie/archive/2011/06/17/148876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LIBGDX: Star.apk</title><link>http://www.cppblog.com/codejie/archive/2011/06/03/147987.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 02 Jun 2011 16:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/06/03/147987.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/147987.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/06/03/147987.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/147987.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/147987.html</trackback:ping><description><![CDATA[<div><br />
</div>
<div>&nbsp;&nbsp; &nbsp;90分钟写好的一个基于libgdx的android应用，有兴趣的<a href="http://www.cppblog.com/Files/codejie/Star-Android.apk.7z">下载</a>看看，也算这段时间研究libgdx的总结吧。。。版本需要2.1及其以上版本，由于cppblog.com附件后缀上传限制，下载<a href="http://www.cppblog.com/Files/codejie/Star-Android.apk.7z">Star-Android.apk.7z</a>后，请去掉.7z后缀，再安装，程序名称为－－star。别忘记android手机的触屏功能哦。。。</div>
<div><br />
</div>
<div>&nbsp;&nbsp; &nbsp;Mac下不知道怎么截屏，明天再上图吧～<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/gdx-star.png" border="0" alt="" width="483" height="828" /><br /><br />Source Code:<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 />--><span style="color: #008080; ">&nbsp; 1</span>&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;file:&nbsp;&nbsp;&nbsp;StarGame.java<br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;author:&nbsp;codejie&nbsp;(codejie@gmail.com)<br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">&nbsp;*&nbsp;date:&nbsp;&nbsp;&nbsp;Jun&nbsp;2,&nbsp;2011&nbsp;11:32:00&nbsp;PM<br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.jie.android.gdx.star;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.Game;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.Gdx;<br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.InputProcessor;<br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.graphics.GL10;<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.graphics.Texture;<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.math.MathUtils;<br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.Action;<br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.OnActionCompleted;<br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.Stage;<br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actions.FadeTo;<br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actions.MoveTo;<br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actions.Parallel;<br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actions.RotateTo;<br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actions.ScaleTo;<br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.badlogic.gdx.scenes.scene2d.actors.Image;<br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;StarGame&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;Game&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;InputProcessor&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.ApplicationListener#create()<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Stage&nbsp;stage&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Texture&nbsp;ballTexture&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Texture&nbsp;starTexture&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;create()&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Stage(</span><span style="color: #000000; ">480</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">800</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ballTexture&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Texture(Gdx.files.internal(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">data/ball.png</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starTexture&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Texture(Gdx.files.internal(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">data/star.png</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gdx.input.setInputProcessor(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;makeStar(</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;star,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;size)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;img&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(star&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Image(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">star</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;starTexture);<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Image(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ball</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;ballTexture);<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(size&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">24</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">24</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x;<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y;<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.width&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;size;<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.height&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;size;<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.addAction(img);<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addActor(img);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;addAction(</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;Image&nbsp;img)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;duration&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MathUtils.random(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">60</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MoveTo&nbsp;moveto&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MoveTo.$(img.x,&nbsp;</span><span style="color: #000000; ">800</span><span style="color: #000000; ">,&nbsp;duration);<br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveto.setCompletionListener(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;OnActionCompleted()&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;completed(Action&nbsp;action)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.removeActor(img);<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;rotate&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MathUtils.random(</span><span style="color: #000000; ">360</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;scale&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MathUtils.random(</span><span style="color: #000000; ">0.5f</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">2.0f</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;fade&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MathUtils.random(</span><span style="color: #000000; ">1.0f</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action&nbsp;action&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Parallel.$(<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveto,<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScaleTo.$(scale,&nbsp;scale,&nbsp;duration),<br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RotateTo.$(rotate,&nbsp;duration),<br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FadeTo.$(fade,&nbsp;duration)<br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.action(action);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;render()&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gdx.gl.glClearColor(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gdx.graphics.getGL10().glClear(GL10.GL_COLOR_BUFFER_BIT);<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;delta&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Gdx.graphics.getDeltaTime();<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;roll&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)(delta&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000000</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(roll&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">15</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; ">)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;makeStar(MathUtils.randomBoolean(),&nbsp;MathUtils.random(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">480</span><span style="color: #000000; ">),&nbsp;MathUtils.random(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">64</span><span style="color: #000000; ">),&nbsp;MathUtils.random(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">64</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.act(delta);<br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.draw();<br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;dispose()&nbsp;{<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.dispose();<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ballTexture.dispose();<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starTexture.dispose();<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#keyDown(int)<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;keyDown(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0)&nbsp;{<br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#keyTyped(char)<br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">123</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">124</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;keyTyped(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;arg0)&nbsp;{<br /></span><span style="color: #008080; ">125</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">126</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">127</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">128</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">129</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">130</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#keyUp(int)<br /></span><span style="color: #008080; ">131</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">132</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">133</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;keyUp(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0)&nbsp;{<br /></span><span style="color: #008080; ">134</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">135</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">136</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">137</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">138</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">139</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#scrolled(int)<br /></span><span style="color: #008080; ">140</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">141</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">142</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;scrolled(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0)&nbsp;{<br /></span><span style="color: #008080; ">143</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">144</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">145</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">146</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">147</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">148</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#touchDown(int,&nbsp;int,&nbsp;int,&nbsp;int)<br /></span><span style="color: #008080; ">149</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">150</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">151</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;touchDown(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg1,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg2,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg3)&nbsp;{<br /></span><span style="color: #008080; ">152</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">153</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">154</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">155</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">156</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">157</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#touchDragged(int,&nbsp;int,&nbsp;int)<br /></span><span style="color: #008080; ">158</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">159</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">160</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;touchDragged(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg1,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg2)&nbsp;{<br /></span><span style="color: #008080; ">161</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">162</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">163</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;makeStar(MathUtils.randomBoolean(),&nbsp;arg0,&nbsp;</span><span style="color: #000000; ">800</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;arg1,&nbsp;MathUtils.random(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">64</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">164</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">165</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">166</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">167</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">168</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">169</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#touchMoved(int,&nbsp;int)<br /></span><span style="color: #008080; ">170</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">171</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">172</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;touchMoved(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg1)&nbsp;{<br /></span><span style="color: #008080; ">173</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">174</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">175</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">176</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">177</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;(non-Javadoc)<br /></span><span style="color: #008080; ">178</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;com.badlogic.gdx.InputProcessor#touchUp(int,&nbsp;int,&nbsp;int,&nbsp;int)<br /></span><span style="color: #008080; ">179</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">180</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br /></span><span style="color: #008080; ">181</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;touchUp(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg0,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg1,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg2,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;arg3)&nbsp;{<br /></span><span style="color: #008080; ">182</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">183</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">184</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">185</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">186</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">187</span>&nbsp;<span style="color: #000000; "></span></div></div><img src ="http://www.cppblog.com/codejie/aggbug/147987.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-06-03 00:53 <a href="http://www.cppblog.com/codejie/archive/2011/06/03/147987.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：Lingoes生词本第二十三版</title><link>http://www.cppblog.com/codejie/archive/2011/03/23/142594.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 23 Mar 2011 14:33:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/03/23/142594.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/142594.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/03/23/142594.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/142594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/142594.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; LingosHook第二十三版(v1.4.000)做好了，实际昨晚就上传了，可以<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>&nbsp;&nbsp;&nbsp; 这个版本没啥功能上的改动，就是界面可以支持多语言了，看如下截图，Setting界面做了修改，用于支持相关的配置。<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_set_lang.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 现在界面支持中文了，样子可以看<a href="http://www.cppblog.com/codejie/archive/2011/03/19/142149.html">这里</a>，要是需要别的语言界面，那要自己做了，俺就会中文和英文。。。下载<a href="http://www.cppblog.com/codejie/admin/=INTER_CAPC_Handin_MSSContextDownload(0)|RESULT=FAIL">lang.po</a>文件，翻译好，发来就好。<br><br>&nbsp;&nbsp;&nbsp; 哦，对了，这个版本对前面版本的插件接口没有版本，可以正常运行的，而且这个版本的安装包里面还是包括原来那个WordExport插件的，所有原来的没有了也没事。但，<span style="COLOR: #0000ff">各位捐赠者要注意，安装新版本是虽然不会覆盖原来的数据，但你的捐赠者插件是不会包含在安装包里面的，所以安装时不要删除原来的文件啊。。。如果那个插件没有了，请M我，我会再发一份给你的。<br><br></span><br>&nbsp;&nbsp;&nbsp; 不多写了，昨晚两点才睡，今天不在状态。。。<img src ="http://www.cppblog.com/codejie/aggbug/142594.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-23 22:33 <a href="http://www.cppblog.com/codejie/archive/2011/03/23/142594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：Donators List</title><link>http://www.cppblog.com/codejie/archive/2011/03/17/142091.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 17 Mar 2011 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/03/17/142091.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/142091.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/03/17/142091.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/142091.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/142091.html</trackback:ping><description><![CDATA[<br />
<br />
&nbsp;&nbsp;&nbsp; 啥也不多说了，非常感谢各位的支持！我的目标是－－－没有－－－退货。。。。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 不过这里还是要重复说两点：<br />
&nbsp;&nbsp;&nbsp; 1. 只买对的：店铺中的捐赠者插件都是一样的，跟捐赠银子的数量是没有关系的，所以。。。你懂了吧。。。<br />
&nbsp;&nbsp;&nbsp; 2. 见好就收：店铺中的捐赠者插件都是一样的，拍一个和拍多个是一样的，所以。。。你知道了吧。。。<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; 上List了！<br />
<br />
<table style="border-collapse: collapse; " border="2" cellspacing="0" cellpadding="3">
     <tbody>
         <tr>
             <td>
             <p align="center"><strong>Donator&nbsp;&nbsp;</strong></p>
             </td>
             <td>
             <p align="center"><strong>Date</strong></p>
             </td>
             <td>
             <p align="center"><strong>Note</strong>&nbsp;&nbsp;</p>
             </td>
         </tr>
         <tr>
             <td>haolly</td>
             <td>2011-03-17</td>
             <td></td>
         </tr>
         <tr>
             <td>edward</td>
             <td>2011-03-17</td>
             <td></td>
         </tr>
         <tr>
             <td>charlie8848</td>
             <td>2011-03-26</td>
             <td></td>
         </tr>
         <tr>
             <td>rushui999</td>
             <td>2011-06-09</td>
             <td></td>
         </tr>
         <tr>
             <td>李凌志</td>
             <td>2012-02-09</td>
             <td></td>
         </tr>
         <tr>
             <td>lss6378</td>
             <td>2012-04-21</td>
             <td></td>
         </tr>
         <tr>
             <td>王恒哲</td>
             <td>2012-05-06</td>
             <td></td>
         </tr>
         <tr>
             <td>xue9u0</td>
             <td>2012-05-21</td>
             <td></td>
         </tr>
         <tr>
             <td>***</td>
             <td>2012-05-28</td>
             <td></td>
         </tr>
         <tr>
             <td>王天琛</td>
             <td>2012-07-06</td>
             <td></td>
         </tr>
         <tr>
             <td>谷俊青</td>
             <td>2012-07-10</td>
             <td></td>
         </tr>
         <tr>
             <td>王**</td>
             <td>2012-07-13</td>
             <td></td>
         </tr>
         <tr>
             <td>杜**</td>
             <td>2012-07-17</td>
             <td></td>
         </tr>
         <tr>
             <td>黄*</td>
             <td>2012-08-24</td>
             <td></td>
         </tr>
         <tr>
             <td>周倪</td>
             <td>2012-09-28</td>
             <td></td>
         </tr>
         <tr>
             <td>马观宇</td>
             <td>2012-10-29</td>
             <td></td>
         </tr>
         <tr>
             <td>侯俊峰</td>
             <td>2012-12-06</td>
             <td></td>
         </tr>
         <tr>
             <td>chenyanluli</td>
             <td>2012-12-30</td>
             <td></td>
         </tr>
         <tr>
             <td>朱友明</td>
             <td>2013-01-04</td>
             <td></td>
         </tr>
         <tr>
             <td>招志明</td>
             <td>2013-04-12</td>
             <td></td>
         </tr>
         <tr>
             <td>周</td>
             <td>2013-11-13</td>
             <td></td>
         </tr>
         <tr>
             <td>朱子豪</td>
             <td>2014-01-09</td>
             <td></td>
         </tr>
         <tr>
             <td>haolly</td>
             <td>2014-02-21</td>
             <td></td>
         </tr>
         <tr>
             <td>卷之藏密扩之无垠</td>
             <td>2014-05-03</td>
             <td></td>
         </tr>
         <tr>
             <td>刘铁军</td>
             <td>2014-07-11</td>
             <td></td>
         </tr>
     </tbody>
</table>
<br />
<br />
&nbsp;&nbsp;&nbsp; 注：<br />
&nbsp; &nbsp; 1. 如果你跟我一样喜欢低调，请告诉我，我会用****来马赛克的。。。。 查看捐赠者插件说明帖子请点<a href="http://www.cppblog.com/codejie/archive/2011/03/15/141425.html">这里</a>；<br />
&nbsp; &nbsp; 2. 由于LingosHook插件接口改动，可能会导致捐赠者插件无法正常使用时，我已单独发邮件给大家，有任何问题请一定来邮件啊。<br />
&nbsp; &nbsp; &nbsp; &nbsp; 插件更新步骤如下：（<span style="color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); ">更新时，请</span><span style="color: #ff0000; ">不要</span><span style="color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); ">删除原有ForDonator.xml文件</span>&nbsp;）<br />
<div style="color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0. 下载/安装新版本（1.6.061）LingosHook;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1. 保存/打开邮件附件－－ForDonator.zip;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2. &nbsp;解压压缩文件，将其中P_ForDonator.<wbr>dll文件拷贝并覆盖原LingosHook安装目录中plug<wbr>ins子目录下同名文件；</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3. 完成。</div><img src ="http://www.cppblog.com/codejie/aggbug/142091.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-17 23:08 <a href="http://www.cppblog.com/codejie/archive/2011/03/17/142091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook：悲剧的Win7</title><link>http://www.cppblog.com/codejie/archive/2011/03/10/141538.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 10 Mar 2011 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/03/10/141538.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/141538.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/03/10/141538.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/141538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/141538.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp; 今天终于见到了LingosHook在Win7下运行的样子，那真就一个字形容－－－悲剧啊。。。<br><br>&nbsp;&nbsp;&nbsp; 悲剧啊，听我慢慢道来。。。<br>&nbsp;&nbsp;&nbsp;&nbsp;1. 周一一夜不关机，下载了Win7 64版本，3GB啊。。。但由于主机不是64系统，虚拟机也没法安装，悲剧阿。。。<br>&nbsp;&nbsp;&nbsp; 2. 周二重新下载32版本，2.3GB，一夜不关机，早上起来发现半夜电脑竟然自动重启了，下载就差不到100MB就完成了，悲剧阿。。。<br>&nbsp;&nbsp;&nbsp; 3. 周三重新，陪电脑到两点，第二天上班睡着了，悲剧阿。。。<br>&nbsp;&nbsp;&nbsp; 4. 今天在VirtualBox安装好Win7，还好一切顺利，下载了Lingoes、LingosHook，安装正常；但发现LingosHook就是不取词，配置也总是配置失败，研究很久才想起应该是权限问题，以前还跟别人说记得看看权限，悲剧啊。。。<br>&nbsp;&nbsp;&nbsp; 5. 唉，悲剧太多了。。。<br>&nbsp;&nbsp;&nbsp; 6. 。。。<br><br><br>&nbsp;&nbsp;&nbsp; 当然了，看到LingosHook能正常在Win7下运行，还是很开心的，虽然表现不如XP。目前发现的问题是HTML界面显示有&#8216;方块&#8217;问题，这个要查查，另外竟然还有&#8216;空词&#8217;现象；还有。。。反正我也碰到一大把曾经有人报告Win7的问题。。。但，但难道真的要我在VirtualBox上也装个VC调试一下吗。。。这，这。。有点悲剧的。。。不过奇怪的是有人报告在64位Win7上有重复取词问题，我却没有发现，是因为我用的是32位系统吗？<br><br>&nbsp;&nbsp;&nbsp; Win7的兄弟姐妹们，容我再试试阿。。。<br><br><br>&lt;---- 丢脸的分割线 ----&gt;<br><br>&nbsp;&nbsp;&nbsp; 号称IT人士多年，Win7还是不会用，感到很丢脸的。。。有哪位教教俺怎么设置程序运行权限？每次都右键选择&#8216;Run as Administrator&#8217;实在有点很笨的样子。。。<br><br><br><br><br><img src ="http://www.cppblog.com/codejie/aggbug/141538.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-10 22:28 <a href="http://www.cppblog.com/codejie/archive/2011/03/10/141538.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>LingosHook：Plugins - Word Export Preview</title><link>http://www.cppblog.com/codejie/archive/2011/01/14/138546.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 14 Jan 2011 10:16:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2011/01/14/138546.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/138546.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2011/01/14/138546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/138546.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/138546.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2011/01/14/138546.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/138546.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-14 18:16 <a href="http://www.cppblog.com/codejie/archive/2011/01/14/138546.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：Lingoes生词本第二十一版</title><link>http://www.cppblog.com/codejie/archive/2010/08/13/123233.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 13 Aug 2010 14:54:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/08/13/123233.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/123233.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/08/13/123233.html#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/123233.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/123233.html</trackback:ping><description><![CDATA[<br><strong>一&nbsp; 序<br></strong><br>&nbsp;&nbsp;&nbsp; 今天自满地下载了最新版（。。是的，每次我也是下载安装的。。。），默认配置下能取词工作的不错，满心欢喜啊。。。随手添加了几个Tag－－Work，NCE，Android，不错，Tag工作的也不错，满心欢喜。。。随手又使用了下背单词的Memory Daily，不错，满心欢喜。。。嗯，还有分类的Classification，不。。。不好，发生Bug了，满脸是汗。。。<br><br><strong>二 &nbsp;文<br></strong><br>&nbsp;&nbsp;&nbsp; LingosHook第二十一版(v1.2.005)没有支持新的功能，只做了改善和修正Bug的工作，可以<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>了。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Tray图标菜单上添加了Tag快捷切换菜单；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 修正Classification中Date和Score不能正确更新的Bug；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.&nbsp;支持自定数据文件存储路径；<br><br>&nbsp;&nbsp;&nbsp; Tray图标新菜单如下图所示：<br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-traymenu.png" border=0><br><br><br>&nbsp;&nbsp;&nbsp; 虽然LingosHook提供了两种缺省Tag设置方式，但实际切换时却非常不方便－－－每次都要Tag或者Classification界面中去设置。这种方式对于我这样一天要分成几段做不同事情的人来说，实在是不灵活，于是就有了这个Tray菜单快捷Tag设置功能。<br>&nbsp;&nbsp;&nbsp;&nbsp;Classification界面中Bug就不说了，丢脸，简单的数据库访问错误，上次分离单词和HTML数据源的时候引入的，一直没有测试这部分。。。<br><br>&nbsp;&nbsp;&nbsp; &#8216;支持自定数据文件存储路径&#8217;这个功能是今天才加上去的，而其它部分工作，包括这个帖子，都在之前写好了，现在补上其使用说明。LingosHook通过命令行参数可以配置数据库文件的存储路径，使用方法如下：<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>&nbsp;&nbsp;&nbsp;&nbsp;LingosHook.exe&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">f&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">db&nbsp;file</span><span style="COLOR: #000000">&gt;</span></div>
<br>&nbsp;&nbsp;&nbsp; 如下图所示，可以通过创建LingosHook的快捷方式来配置此参数，默认的数据文件是LingosHook应用同目录下的LingosHook.db3。<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-shortcut.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 需要说明的是，请保证数据文件存储目录可以访问，直接点说就是要保证如上'mydata'目录存在，否则LingosHook将初始失败而不能启动。<br><br><br><strong>三&nbsp; 跋<br></strong><br>&nbsp;&nbsp;&nbsp; 经过前一段时间对LingosHook密集开发，有些感到疲惫了，估计是热情不再了。。。还好，基本功能都有了～～现在我也要开始从开发转到使用，是啊，说起来有些杯具，为了开发LingosHook，自己反而很久没用用过了，每次都是Debug，Fix，Test。。。<br>&nbsp;&nbsp;&nbsp; 如果有兴趣的，可到这里<a href="http://code.google.com/p/lingoshook/">下载源码</a>，来个定制的；不知各位想过没有，LingosHook支持金山和有道应该不难的。。。<br>&nbsp;&nbsp;&nbsp; 如果有好心的，请帮忙写个使用说明吧，我怕我要懒了。。。<br><br><br><strong>四 注</strong><br><br>&nbsp;&nbsp;&nbsp; 这里郑重说明：本帖不是我的或者LingosHook的绝笔信。。。LingosHook还会继续维护的，只是要降低开发力度和频度了。。。因为我变心了。。。<br><br><br><img src ="http://www.cppblog.com/codejie/aggbug/123233.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 22:54 <a href="http://www.cppblog.com/codejie/archive/2010/08/13/123233.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/10/122930.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 10 Aug 2010 13:51:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2010/08/10/122930.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/122930.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2010/08/10/122930.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/122930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/122930.html</trackback:ping><description><![CDATA[<p><br>&nbsp;&nbsp;&nbsp; LingosHook第二十版(v1.2.003)主要围绕HTML结果的单词解析问题添加了新的功能，并为此增加了相应的配置项。<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>。<br><br>&nbsp;&nbsp;&nbsp; 此版本的问题可以由下图描述：<br><img height=768 alt="" src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-auto-1.png" width=535 border=0><br><br>&nbsp;&nbsp;&nbsp; 上图是查询单词'auto'的结果，从左侧的Index中可以看到LingosHook提取的结果单词，包括'auto'，'Auto'，'AUTO'和'auto-'。此结果展现了LingosHook的一个&#8216;强力&#8217;功能－－尽可能地提取HTML结果数据中罗列的单词。这样做的好处是能尽量记录结果数据中所返回的和所查询单词相关的单词；但当查询词典过多时，此功能也会造成过多的冗余数据，就像上图所示。<br>&nbsp;&nbsp;&nbsp; 因此有必要提供相应的功能以屏蔽此能力。于是LingosHook在此版本新增如下配置，以实现此需求。<br></p>
<p><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-set-af.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 点击如上Setting界面中新增的'Analysis Filter'按钮，将弹出如下对话框，并提供三种单词解析过滤配置；<br><br><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-set-afdlg.png" border=0><br><br>&nbsp;&nbsp;&nbsp; 1. 'Case Insensitive': 大小写不敏感；选中此项后，大小写不同的单词将被认为是相同的单词，相同的单词会从列表中被过滤掉；<br>&nbsp;&nbsp;&nbsp; 2. 'One word in each dictionary': 一个词典仅记录一个单词；选中此项后，LingosHook将针对不同的词典结果，仅解析其列举的第一个单词；<br>&nbsp;&nbsp;&nbsp; 3. 'One word in all dictionaries': 所有词典仅记录一个单词；选中此项后，LingosHook将针对不同的词典结果，仅解析全部词典列举的第一个单词；<br><br>&nbsp;&nbsp;&nbsp; 下图展示了三种不同配置下，显示的查询'auto'时的结果。<br></p>
<p><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-auto-2.PNG" border=0><br><br>&nbsp;&nbsp;&nbsp; 'Analysis Filter'功能就这些了。。。<br><br><br>&lt;---- 疲惫的分割线 ----&gt;<br><br>&nbsp;&nbsp;&nbsp; LingosHook就这些了。。。</p><img src ="http://www.cppblog.com/codejie/aggbug/122930.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-10 21:51 <a href="http://www.cppblog.com/codejie/archive/2010/08/10/122930.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></channel></rss>