<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://sluttery.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fsluttery.spaces.live.com%2fcategory%2f%e5%a4%87%e5%bf%98%e5%bd%95%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>珠穆朗玛: 备忘录</title><description /><link>http://sluttery.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=cat%25E5%25A4%2587%25E5%25BF%2598%25E5%25BD%2595</link><language>en-US</language><pubDate>Wed, 27 Aug 2008 13:07:19 GMT</pubDate><lastBuildDate>Wed, 27 Aug 2008 13:07:19 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://sluttery.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>3848887354281525204</live:id><live:alias>sluttery</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>不孝真的有三</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4531.entry</link><description> 听多了“不孝有三，无后为大”，一直不知道不大的那两个，今天终于有人解答了老汉的难题：&lt;br&gt;&lt;br&gt;&lt;a href="http://blog.sina.com.cn/s/blog_4c0596f60100a2oy.html"&gt;http://blog.sina.com.cn/s/blog_4c0596f60100a2oy.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e4%b8%8d%e5%ad%9d%e7%9c%9f%e7%9a%84%e6%9c%89%e4%b8%89&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4531.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4531.entry</guid><pubDate>Tue, 12 Aug 2008 03:49:35 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4531/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4531.entry#comment</wfw:comment><dcterms:modified>2008-08-12T03:49:35Z</dcterms:modified></item><item><title>JRE/JDK 大集合</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4530.entry</link><description>&lt;div&gt;几天前在网络上到处找 JRE 1.3.1，怎么也找不到，Sun 的网页上说这个版本的支持期限已到，不再提供下载。逼急了，是从另外一个软件的安装包里硬生生地把 JRE 的安装包抠出来的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;今天发现 Sun 自己就有（难道是刚做上去的？）一个完整的页面，可以下载到各个版本的 JRE/JDK，记录于此，以备后用。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://java.sun.com/products/archive/"&gt;http://java.sun.com/products/archive/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+JRE%2fJDK+%e5%a4%a7%e9%9b%86%e5%90%88&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4530.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4530.entry</guid><pubDate>Tue, 12 Aug 2008 02:36:53 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4530/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4530.entry#comment</wfw:comment><dcterms:modified>2008-08-12T02:36:53Z</dcterms:modified></item><item><title>Windows Vista/UIQ3 SDK/WINSCW 编译环境</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4490.entry</link><description>&lt;div&gt;写了个测试程序要在 UIQ3 SDK 下编译看看，开始习惯性地用 abld build wins udeb，结果就报告 eexe.lib 无法 make，到对应目录下照这个文件时才想起来 wins 环境还想已经被 Symbian 开发逐渐抛弃了，于是就改用 winscw 编译。这次报告找不到合适的 CodeWarrior 编译器（Unable to identify a valid CodeWarrior for Symbian OS installation），Google 了下，说是要安装 epoc32\tools\distrib\nokia_x86_compiler_3_2_3.exe。为了避免麻烦，直接使用了管理员权限运行，安装之后前面的错误还在。无意看到了安装后的目录里（epoc32\tools\nokia_compiler）有一个 bin\env_update.exe，就运行了一下，选到了 3.2.x 上。通过 set 命令已经看到若干和 CodeWarrior 编译器相关的环境变量，就试着再次编译。又报错：EPOCROOT environment variable must be capitalised。Google 又说了，要打开 epoc32\tools\e32env.pm，把包含这错误信息的那一行删除（或者注释掉）。照着办理后，果然可以编译了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+Vista%2fUIQ3+SDK%2fWINSCW+%e7%bc%96%e8%af%91%e7%8e%af%e5%a2%83&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4490.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4490.entry</guid><pubDate>Sat, 19 Jul 2008 09:34:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4490/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4490.entry#comment</wfw:comment><dcterms:modified>2008-07-19T09:34:56Z</dcterms:modified></item><item><title>Carbide.C++ 1.3 和金山词霸 2003</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4471.entry</link><description>&lt;div&gt;在金山词霸 2003 运行着的时候，Carbide.C++ 1.3 的主程序将不能正常运行起来，退出金山词霸 2003 即可。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;注 1：好像某个版本的金山词霸曾会阻止 Visual Studio 运行，难道金山仇视开发工具？呵呵。&lt;/div&gt;
&lt;div&gt;注 2：老汉的金山词霸 2003 是绿色移动版，所以一直没扔，前两天用了一下 2007，感觉好难用。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Carbide.C%2b%2b+1.3+%e5%92%8c%e9%87%91%e5%b1%b1%e8%af%8d%e9%9c%b8+2003&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4471.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4471.entry</guid><pubDate>Thu, 03 Jul 2008 02:10:12 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4471/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4471.entry#comment</wfw:comment><dcterms:modified>2008-07-03T02:10:12Z</dcterms:modified></item><item><title>Visual C++ 的 fatal error C1001</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4436.entry</link><description> 如果你是一位老资格的 Visual C++ 用户，那一定会对 Visual C++ 的 fatal error C1001 不会陌生。如果你在用 VC6 编一个规模较大的工程，如果你在用 VC6 编译一个用到了模板的工程，那恭喜你，这个错误会时不时冒地出来和你打招呼，搞得你手足无措。详细的出错信息如下：&lt;br&gt;fatal error C1001: INTERNAL COMPILER ERROR&lt;br&gt;        (compiler file 'msc1.cpp', line 1794) &lt;br&gt;         Please choose the Technical Support command on the Visual C++ &lt;br&gt;         Help menu, or open the Technical Support help file for more information&lt;br&gt;Error executing cl.exe. &lt;br&gt;网上已经有其他人写的解决方法了，不过貌似都很麻烦，而且还有副作用（例如有一种是要求把预编译头选项关闭，那会导致整个工程的编译如同老牛拉车）。而官方的针对此问题的描述在这里：&lt;a href="http://support.microsoft.com/?scid=kb;en-us;305980&amp;amp;x=14&amp;amp;y=12"&gt;http://support.microsoft.com/?scid=kb%3Ben-us%3B305980&amp;amp;x=14&amp;amp;y=12&lt;/a&gt;，不过，按照微软一贯的风格，按照它的指导去解决问题，可能需要具有无比的运气。&lt;br&gt;经过老汉本人多次验证，在 VC6 中可以用如下方法解决：在出错信息中找到出错时正在编译的那个 cpp 文件的名字，把它记下来；在 FileView 窗口中的 source files 下新建一个子文件夹，把刚才记住的 cpp 文件移动到这个文件夹中；然后再次编译。（顺便说一下，这其实是改变了工程中 cpp 文件的编译顺序）可以很负责任的说，老汉自己验证的成功率在 99% 以上。&lt;br&gt;&lt;br&gt;这个技术本来是专门针对于 VC6 的，因为从 VS2003 开始，老汉几乎再也没有遇到过这个问题，所以也就一直没有共享出来。可惜历史总是会重演，刚才一个在玩儿 VS2005 的兄弟竟然在摸死你上和我说编译器报以下错误：&lt;br&gt;fatal error C1001: 编译器中发生内部错误。（他的是中文版，英文版的错误信息似乎应该是：fatal error C1001: An internal error has occurred in the compiler.）&lt;br&gt;老汉一眼就看出了这绝对是前述问题借尸还魂了，所以把秘籍告诉了他，一次搞定！唯一需要注意的就是，VS2005 里，FileView 已经变成了 Solution Explorer（中文是“解决方案管理器”），而 New Folder 菜单项也变成了“Add-&amp;gt;New Filter”（中文可能是“添加-&amp;gt;新筛选器”）。仅此而已。&lt;br&gt;&lt;br&gt;祝遇到这个问题的兄弟好运，能搜到我的这篇文章。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Visual+C%2b%2b+%e7%9a%84+fatal+error+C1001&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4436.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4436.entry</guid><pubDate>Mon, 30 Jun 2008 06:43:44 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4436/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4436.entry#comment</wfw:comment><dcterms:modified>2008-06-30T07:08:21Z</dcterms:modified></item><item><title>界面库公司</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4432.entry</link><description>&lt;div&gt;猛然发现，国内的界面库公司真够多的，罗列几个，以备老汉失业后去投靠：&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.uipower.com/"&gt;http://www.uipower.com/&lt;/a&gt;（Skin++）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.skinfeature.com/"&gt;http://www.skinfeature.com/&lt;/a&gt;（SkinFeature）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.skinsharp.com/"&gt;http://www.skinsharp.com/&lt;/a&gt;（Skin＃）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.afe-soft.com/"&gt;http://www.afe-soft.com/&lt;/a&gt;（&lt;span&gt;SkinBeauty&lt;/span&gt;）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.softui.net/"&gt;http://www.softui.net/&lt;/a&gt;（SoftUI）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.appface.com/"&gt;http://www.appface.com/&lt;/a&gt;（AppFace）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.iuishop.com/"&gt;http://www.iuishop.com/&lt;/a&gt;（LibUIDK）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.sygui.com/"&gt;http://www.sygui.com/&lt;/a&gt;（SyGUI）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.neemedia.com/"&gt;http://www.neemedia.com/&lt;/a&gt;（USkin）&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.gardenui.com/"&gt;http://www.gardenui.com/&lt;/a&gt;（GardenUI）&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;貌似还有，若干站点连风格都几乎大同小异，不知道怎么活，真奇怪。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e7%95%8c%e9%9d%a2%e5%ba%93%e5%85%ac%e5%8f%b8&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4432.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4432.entry</guid><pubDate>Fri, 27 Jun 2008 02:40:46 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4432/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4432.entry#comment</wfw:comment><dcterms:modified>2008-06-27T02:40:46Z</dcterms:modified></item><item><title>链：美国兰德公司对中国评价的两个版本</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4430.entry</link><description> http://hi.baidu.com/engelmybestlove/blog/item/d21799c7855595d9d0006022.html&lt;br&gt;&lt;br&gt;大家自己看，自己想。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e9%93%be%ef%bc%9a%e7%be%8e%e5%9b%bd%e5%85%b0%e5%be%b7%e5%85%ac%e5%8f%b8%e5%af%b9%e4%b8%ad%e5%9b%bd%e8%af%84%e4%bb%b7%e7%9a%84%e4%b8%a4%e4%b8%aa%e7%89%88%e6%9c%ac&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4430.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4430.entry</guid><pubDate>Wed, 25 Jun 2008 06:36:57 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4430/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4430.entry#comment</wfw:comment><dcterms:modified>2008-06-25T06:36:57Z</dcterms:modified></item><item><title>链：UML(统一建模语言)死亡的 13 个理由</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4424.entry</link><description> &lt;a href="http://littletutorials.com/2008/05/15/13-reasons-for-umls-descent-into-darkness/"&gt;http://littletutorials.com/2008/05/15/13-reasons-for-umls-descent-into-darkness/&lt;/a&gt;&lt;br&gt;&lt;br&gt;1. 由一个委员会设计；
&lt;br&gt;2. 他们老想着把 UML 转化成金钱；
&lt;br&gt;3. 试图统一所有的东西包括厨房水池（规格文本大于 800 页）；
&lt;br&gt;4. 想要一步登天，违反了程序员的认知；
&lt;br&gt;5. 观念膨胀；
&lt;br&gt;6. 总是在追赶新的语言和新的概念；
&lt;br&gt;7. UML 试图成为一个程序语言；
&lt;br&gt;8. 需要昂贵的工具；
&lt;br&gt;9. 模式不清晰；
&lt;br&gt;10. 真正的软件设计问题缺乏解决方法；
&lt;br&gt;11. 在你写第一行代码前就假设你知道一切；
&lt;br&gt;12. 对待软件开发就像对待制造业；
&lt;br&gt;13. UML 工具针对了错误的目标。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e9%93%be%ef%bc%9aUML(%e7%bb%9f%e4%b8%80%e5%bb%ba%e6%a8%a1%e8%af%ad%e8%a8%80)%e6%ad%bb%e4%ba%a1%e7%9a%84+13+%e4%b8%aa%e7%90%86%e7%94%b1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4424.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4424.entry</guid><pubDate>Sat, 21 Jun 2008 04:20:15 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4424/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4424.entry#comment</wfw:comment><dcterms:modified>2008-06-21T04:21:17Z</dcterms:modified></item><item><title>Windows XP, SP3, NCF, 7710, S60 2nd FP3</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4382.entry</link><description>&lt;div&gt;不知道还有没有朋友记得老汉的这个帖子：&lt;a href="http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3912.entry"&gt;Java，Symbian，哪个都不怎么样&lt;/a&gt;。当时要在两个 Symbian 的模拟器上互相收发短信，最后以失败告终。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;前两天为了用上 Windows XP SP3，做了一件很糟糕的事情。系统运行了两年多了，微软的补丁打了又打，C 盘都快满了，据说 SP3 是个合集，老汉就想，先把原来已经安装的补丁卸载了，再安装 SP3 可能会省空间。于是开始动手，好几十个补丁，几乎每次都要求重新启动，终于在卸载完某个之后，重启蓝屏了。于是，…………新系统诞生了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;在收拾停当的机器里，我望着刚装好的 7710 SDK 和 S60 FP3 SDK，前面的往事又涌上心头。犹豫良久，还是决定试试看，能不能把那个遗憾搞定。然后就又勇敢地装上了 JRE 1.42，勇敢地把 JRE 1.6 卸载，勇敢地安装 NCF 1.2，勇敢地用它把两个模拟器都启动起来，结果是，S60 的模拟器正常，7710 的模拟器则死的很难看。倒霉的是，把它们全部关闭后，单独启动 7710 的模拟器，仍然会频繁地不定期失去响应。无计之下重装了 7710 的 SDK，结果一样，没有运行 NCF 之前，两个模拟器工作都正常，只要使用过 NCF，7710 的模拟器马上出状况。看来问题还在 NCF 上。只好像爱迪生一样，勤奋地瞎试验，终于有一次，NCF 的一个提示框让我感到了什么苗头：问我要不要安装一个蓝牙 USB 驱动。可我现在并不需要蓝牙功能啊，毫不犹豫地在 NCF 中把和蓝牙的相关的东西屏蔽了（具体操作：在指定的 SDK 上右击，选择“Product Properties...”，在出现的属性表中选中“Technology”页面，把列名为“Communicartion Technology”中值为“BTUSB”的行最前面的勾选去掉，点击“OK”即可）。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;现在，从 S60 里发的短信一下就会出现在 7710 的界面上。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+XP%2c+SP3%2c+NCF%2c+7710%2c+S60+2nd+FP3&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4382.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4382.entry</guid><pubDate>Sat, 31 May 2008 04:12:03 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4382/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4382.entry#comment</wfw:comment><dcterms:modified>2008-05-31T04:12:03Z</dcterms:modified></item><item><title>关于 Symbian</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4307.entry</link><description>&lt;div&gt;老汉对 Symbian 系统有两句总结：&lt;/div&gt;
&lt;div&gt;1、Symbian 用所谓的 OO 方法强奸了世上几乎所有的概念，把原本简单的弄成了复杂&lt;/div&gt;
&lt;div&gt;2、Symbian 把几乎所有的容错性问题都留给了别人，把可以简单的弄成了复杂&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%85%b3%e4%ba%8e+Symbian&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4307.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4307.entry</guid><pubDate>Tue, 15 Apr 2008 03:21:02 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4307/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4307.entry#comment</wfw:comment><dcterms:modified>2008-04-15T03:21:02Z</dcterms:modified></item><item><title>as.rising.com.cn</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4248.entry</link><description>经过有些人不懈的努力，瑞星公司终于把这个产品做到了极致……&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+as.rising.com.cn&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4248.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4248.entry</guid><pubDate>Wed, 12 Mar 2008 08:51:59 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4248/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4248.entry#comment</wfw:comment><dcterms:modified>2008-03-12T08:57:23Z</dcterms:modified></item><item><title>一个 FireFox 的极品插件 —— PicLens</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4218.entry</link><description>今日无意中找到的，名字叫 PicLens，其主页为：http://www.cooliris.com/，查看网络相册里的图片简直是太漂亮了！相信老汉吧，俺是很少这样夸赞一个东西的。&lt;br&gt;&lt;br&gt;该主页上还有另外一个插件 Previews 也很不错。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e4%b8%80%e4%b8%aa+FireFox+%e7%9a%84%e6%9e%81%e5%93%81%e6%8f%92%e4%bb%b6+%e2%80%94%e2%80%94+PicLens&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4218.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4218.entry</guid><pubDate>Sun, 10 Feb 2008 11:48:32 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4218/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4218.entry#comment</wfw:comment><dcterms:modified>2008-02-10T11:58:03Z</dcterms:modified></item><item><title>关于快捷方式</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4185.entry</link><description>老早就发现 Windows 下的快捷方式有些玄妙，最奇怪的莫过于有的快捷方式的属性页里，“目标”编辑框、“查找目标”和“更改图标”按钮被禁用。那个“查找目标”按钮是我经常要用到的（附注，此功能在 Vista 里好像被直接加入到了关联菜单里，可见确实是一个常用功能，不止是我个人），如果遇上这类快捷方式，只能是徒叹奈何。如果你安装了 Microsoft Office 2003 或者 2007，不妨看一下开始菜单里的快捷方式的属性，一定如我所说。&lt;br&gt;&lt;br&gt;其实不止 Office，还有很多别的程序也一样。后来才知道，但凡是由 Windows Installer 创建出来的快捷方式，都是这个样子。一度想弄明白，既然目标程序还能正常被运行起来，显然有一些信息被藏起来了，这些信息放在哪里呢？要是能找到的话，也就可以搞快捷方式所指的目标了。翻遍了 MSDN 中对 IShellLink 接口的介绍，也没找到任何相关的信息。今天无意之中看到了另一个接口的名字，为 IShellLinkDataList，直觉意识到可能和我长久不明白的这一问题有关。一看文档，果然，这个接口可以存取和快捷方式相关联的额外数据，其中就有一种是 Windows  Installer 所使用的。&lt;br&gt;&lt;br&gt; 网上关于这个接口的讨论不多，可以参考的链接有：&lt;br&gt;&lt;a href="http://www.eggheadcafe.com/forumarchives/platformsdkshell/Sep2005/post23527910.asp"&gt;http://www.eggheadcafe.com/forumarchives/platformsdkshell/Sep2005/post23527910.asp&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20943881.html"&gt;http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20943881.html&lt;/a&gt;&lt;br&gt;&lt;a href="http://groups.google.co.uk/group/microsoft.public.platformsdk.shell/browse_thread/thread/9cd0d1ff4570fed0"&gt;http://groups.google.co.uk/group/microsoft.public.platformsdk.shell/browse_thread/thread/9cd0d1ff4570fed0&lt;/a&gt;&lt;br&gt;&lt;br&gt;此外，今天还解开了另一个有关屏幕放大镜技术的疑团，甚为高兴。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%85%b3%e4%ba%8e%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4185.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4185.entry</guid><pubDate>Wed, 16 Jan 2008 14:43:01 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4185/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4185.entry#comment</wfw:comment><dcterms:modified>2008-01-16T14:47:13Z</dcterms:modified></item><item><title>用 FireFox 发布 Live 日志</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4184.entry</link><description>不知道为什么，也许是微软故意的，不能用 FireFox 写 blog 已经很久了。安装 IE7 之后，正如章鱼兄所说，使用 FireFox 的频率增加，但是写日志却总是需要打开那个该死的 IE，不为别的，只为那传说中美丽的草原，靠，串词了，应该是只为那传说中美丽的“发布日志”按钮。在 FireFox 里，那个倒霉的按钮永远是灰色的。第一遇到的时候，以为是有什么内容没写全，看了半天也没发现什么，总之是被毙了；大概微软根据统计，发现用 FireFox 浏览器的人越来越多了，用这种方式遏制一下。&lt;br&gt;&lt;br&gt;今天又在网上乱搜，看有没人也因此而苦恼，结果找到了解决方案，具体可以看这里：&lt;a target="_blank" href="http://ftofficer.spaces.live.com/blog/cns!423B72634E2F6B7E!427.entry"&gt;http://ftofficer.spaces.live.com/blog/cns!423B72634E2F6B7E!427.entry&lt;/a&gt;。前提是要安装一个 FireFox 的插件，名字叫 Greasemonkey。比较好的是，我在嗷嗷狐的蛊惑下这个插件早就驻扎在 FireFox 里了。那个小猴子每天都在右下角冲着我乐，可我几乎从来没有用过它……，今天算是知道厉害了，竟然还可以这样安装自己写的脚本！有时间写一个屏蔽微软 Live 站点最上方的广告条的脚本，哼，看见就烦！&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e7%94%a8+FireFox+%e5%8f%91%e5%b8%83+Live+%e6%97%a5%e5%bf%97&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4184.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4184.entry</guid><pubDate>Wed, 16 Jan 2008 11:23:56 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4184/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4184.entry#comment</wfw:comment><dcterms:modified>2008-01-16T11:23:56Z</dcterms:modified></item><item><title>访问基类中的保护成员</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4183.entry</link><description>&lt;div&gt;C++ 有点意思，时不时就能露出使用者的软肋。老汉又被戏弄了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;有三个类，大致如下：&lt;/div&gt;
&lt;div&gt;class base&lt;br&gt;{&lt;br&gt;protected:&lt;br&gt; void foo()&lt;br&gt; {&lt;br&gt;  printf(&amp;quot;base::foo()\n&amp;quot;);&lt;br&gt; }&lt;br&gt;};&lt;/div&gt;
&lt;div&gt;class sub : public base&lt;br&gt;{&lt;br&gt;};&lt;/div&gt;
&lt;div&gt;class sub2 : public sub&lt;br&gt;{&lt;br&gt;public:&lt;br&gt; void bar()&lt;br&gt; {&lt;br&gt;  sub* p = this;&lt;br&gt;  p-&amp;gt;foo();&lt;br&gt; }&lt;br&gt;};&lt;br&gt;&lt;/div&gt;
&lt;div&gt;这样写是编译不过去滴，卡在 p-&amp;gt;foo() 那儿，说是访问了保护成员，把 sub* 改为 base* 也是不管用的，问题依旧。&lt;/div&gt;
&lt;div&gt;怎么办呢？呵呵，看来 C++ 是个文明社会，脱了裤子放屁是不允许的，直接调用 foo() 就可以啦。&lt;/div&gt;
&lt;div&gt;什么道理？蜗牛什么的来讲讲？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt; &lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e8%ae%bf%e9%97%ae%e5%9f%ba%e7%b1%bb%e4%b8%ad%e7%9a%84%e4%bf%9d%e6%8a%a4%e6%88%90%e5%91%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4183.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4183.entry</guid><pubDate>Wed, 16 Jan 2008 08:58:07 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4183/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4183.entry#comment</wfw:comment><dcterms:modified>2008-07-02T02:41:40Z</dcterms:modified></item><item><title>MFC 9.0</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4156.entry</link><description>&lt;div&gt;昨天晚上把 MFC 8.0 和 MFC 9.0 对比了一下，从最后的结果来看，这样的一个大版本升级，相当名不符实。不过事实是，从 MFC 4.2 之后的版本，其变化就一直很小。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;相对于 MFC 8.0，9.0 的变化有：&lt;/div&gt;
&lt;div&gt;1、新增了几个系统控件和公用控件的封装类（如 CSplitButton 和 CPagerCtrl）&lt;/div&gt;
&lt;div&gt;2、对原有的系统控件/公用控件/公用对话框封装类进行了更新，以包含 Windows XP/2003/Vista 以来的一系列原生性的增强（如 CTreeCtrl），变化以 CFileDialog 为最。&lt;/div&gt;
&lt;div&gt;3、对框架窗口使用主菜单的行为作了增强。其必要性有可能和 Vista 下弱化主菜单的功能的趋势有关。&lt;/div&gt;
&lt;div&gt;4、彻底去除了和 Windows 9x 相关的代码。这实际上是一个收尾工作，MFC 8.0 就已经不能在 Windows 95 下运行。&lt;/div&gt;
&lt;div&gt;5、对大量的函数原型中参数及返回值的专用修饰符做了更新。这其实和类库的使用者关系不大，那些修饰符的作用在于让调试器更清楚地知道参数/返回值的正确值或者形态，以便于发出警告。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;MFC 在之前的版本就和 ATL 的代码杂糅到了一起，所以也顺便提几个 ATL 的变化。其一是 ATL 不再支持最小化 CRT 的使用（即 _ATL_MIN_CRT 宏），其二是不允许以非安全方式编译（即原来的 _SECURE_ATL 宏成了默认行为，而且不再对此宏进行否定性的支持）。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;另外，老汉不太赞同有很多人在网上所说的 MFC 已经没落之类的说法，只是随着时间的推移，MFC 的研究已经到达了一定的程度，其内部的构造已经被无数次地解构，对于很多人来说没有了新鲜感和神秘感而已。如此庞大的框架类库，在使用了这么长的时间之后，仍然能在作出轻微的修改就足以跟得上系统内日新月异的变化，正从另一个侧面反映出这个类库极为优秀的架构设计和强劲的生命力。在这个电子世界里，长期保持稳定的东西就会遭到人的忘却似乎已经成了一种规律，并不是 MFC 独然。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+MFC+9.0&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4156.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4156.entry</guid><pubDate>Fri, 11 Jan 2008 02:08:55 GMT</pubDate><slash:comments>8</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4156/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4156.entry#comment</wfw:comment><dcterms:modified>2008-01-11T02:08:55Z</dcterms:modified></item><item><title>IIS 5 的 HTTP 500 错误的解决办法</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4143.entry</link><description>&lt;div&gt;在虚拟机里的 Windows 2000 Server 上装 IIS，安装后之后，静态页面可以打开，但是要打开任何 asp 页面的话，浏览器都会收到 HTTP 500 的错误。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;问了一下专家 AD，AD 也不清楚。于是 Google 了一下，返回来结果一大把。从这些结果来看，似乎相同的 HTTP 500 会有很多不同的原因，在系统的日志里会有一个比较含糊的描述。老汉看了一下自己的日志，其描述是：“服务器未能转入应用程序 '/LM/W3SVC/1/ROOT'。错误是 '一般性拒绝访问错误'。”又把这句话搜了一下，就找到解决方案了：把系统目录下的 mfc42.dll 文件的访问属性中加入 IWAM_XXX 这个用户（XXX 请替换成相应的机器名），并赋予此用户读取以及执行的权限即可。经尝试，手到病除。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;至于日志中出现的其他类型的描述所对应的错误，俺没有碰上，也没法测试了。谁倒霉了，自己玩儿去。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+IIS+5+%e7%9a%84+HTTP+500+%e9%94%99%e8%af%af%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4143.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4143.entry</guid><pubDate>Fri, 04 Jan 2008 05:56:31 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4143/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4143.entry#comment</wfw:comment><dcterms:modified>2008-01-04T05:56:31Z</dcterms:modified></item><item><title>资源管理器中“文件夹”不能显示树状目录的解决办法</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4129.entry</link><description>&lt;div&gt;资源管理器中“文件夹”不能显示树状目录的解决办法：&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;打开命令提示符，依次执行以下命令：&lt;/div&gt;
&lt;div&gt;regsvr32 mshtml.dll &lt;br&gt;regsvr32 shdocvw.dll -i &lt;br&gt;regsvr32 shell32.dll -i &lt;/div&gt;
&lt;div&gt;&lt;br&gt;三个命令执行后注销，重新登录即可。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e8%b5%84%e6%ba%90%e7%ae%a1%e7%90%86%e5%99%a8%e4%b8%ad%e2%80%9c%e6%96%87%e4%bb%b6%e5%a4%b9%e2%80%9d%e4%b8%8d%e8%83%bd%e6%98%be%e7%a4%ba%e6%a0%91%e7%8a%b6%e7%9b%ae%e5%bd%95%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4129.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4129.entry</guid><pubDate>Thu, 27 Dec 2007 03:20:48 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4129/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4129.entry#comment</wfw:comment><dcterms:modified>2007-12-27T03:20:48Z</dcterms:modified></item><item><title>彩信拦截</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4059.entry</link><description>&lt;div&gt;似乎找到拦截 Windows Mobile 上的彩信的途径了。看起来最有用的信息往往在眼皮底下。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%bd%a9%e4%bf%a1%e6%8b%a6%e6%88%aa&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4059.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4059.entry</guid><pubDate>Thu, 18 Oct 2007 03:28:26 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4059/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4059.entry#comment</wfw:comment><dcterms:modified>2007-10-18T03:28:26Z</dcterms:modified></item><item><title>一个单词</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4048.entry</link><description>&lt;div&gt;曾经让相当多的人做这道计算机算法的入门题，没见过有一个人把这个英文单词拼写出来的，老汉自己也不知道，今天无意发现了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;回文：palindrome。是在 MSDN 中 _strrev 函数的文档例子中看到，并怀疑，乃至在金山糍粑中证实的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e4%b8%80%e4%b8%aa%e5%8d%95%e8%af%8d&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4048.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4048.entry</guid><pubDate>Thu, 11 Oct 2007 13:56:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4048/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4048.entry#comment</wfw:comment><dcterms:modified>2007-10-13T02:12:35Z</dcterms:modified></item><item><title>Nokia 6681 更改蓝牙接收路径</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4037.entry</link><description>&lt;div&gt;Nokia 6681 可以改变蓝牙接收的位置，方法是：&lt;br&gt;进入“信息”，点“选项”／“设置”／“其它”／“使用的存储”，进去后改到卡里就行了。&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Nokia+6681+%e6%9b%b4%e6%94%b9%e8%93%9d%e7%89%99%e6%8e%a5%e6%94%b6%e8%b7%af%e5%be%84&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4037.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4037.entry</guid><pubDate>Mon, 08 Oct 2007 01:36:07 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4037/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4037.entry#comment</wfw:comment><dcterms:modified>2007-10-08T01:36:07Z</dcterms:modified></item><item><title>转：Dopod（多普达）身世之谜</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4034.entry</link><description>&lt;div&gt;&lt;a href="http://mobile.intozgc.com/111/111429.html"&gt;http://mobile.intozgc.com/111/111429.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e8%bd%ac%ef%bc%9aDopod%ef%bc%88%e5%a4%9a%e6%99%ae%e8%be%be%ef%bc%89%e8%ba%ab%e4%b8%96%e4%b9%8b%e8%b0%9c&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4034.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4034.entry</guid><pubDate>Sat, 06 Oct 2007 04:53:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4034/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4034.entry#comment</wfw:comment><dcterms:modified>2007-10-06T04:53:12Z</dcterms:modified></item><item><title>模块的版本信息到哪里去了？</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4020.entry</link><description>&lt;div&gt;由于老汉喜欢用 SDK 写程序，结果发现了这么一个问题：手工往中加入版本资源，编译链接均通过，却无法使用资源浏览器的属性功能看到“版本”那个属性页。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;开始以为是没有链接到最终文件中，可是用二进制查看工具查看编译出来的 .res 文件和最终的 .exe 文件，在尾部却能看到版本资源中的字符串；后来又以为 VC6 的链接器生成时有 BUG，结果用 VC8 也不行；再后来怀疑的 PE 文件格式有误，可是使用别的 PE 文件查看器又都能列出版本资源块。自己写了个验证程序，结果调用 GetFileVersionInfoSize() API 即失败，错误信息说没有找到资源，晕了……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;后来艰苦奋战，发现了奥秘。只要在 .rc 文件中包含了 windows.h 头文件（无论直接间接），版本属性页就可以显示出来，去掉就不行。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;问题是解决了，可是稀里糊涂，我怀疑还是某个头文件给链接器传递了什么参数的原因。有明白的么？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e6%a8%a1%e5%9d%97%e7%9a%84%e7%89%88%e6%9c%ac%e4%bf%a1%e6%81%af%e5%88%b0%e5%93%aa%e9%87%8c%e5%8e%bb%e4%ba%86%ef%bc%9f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4020.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4020.entry</guid><pubDate>Fri, 21 Sep 2007 12:54:23 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4020/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4020.entry#comment</wfw:comment><dcterms:modified>2007-09-21T12:54:23Z</dcterms:modified></item><item><title>Windows Mobile 使用的 CAB 安装包</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4010.entry</link><description>&lt;div&gt;在过去的工作中，很多次对 CAB 包中的安装信息的存储位置产生过疑问，只是发现好像有一个名为 _setup.xml 的文件似乎和安装有不同寻常的关系，但是有的安装包里却又没有这个文件。一直没有能仔细研究一下。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;今天找到了些资料。据说存在两种安装包，一种就是上面说的使用 _setup.xml 的方式，这种方式比较新；另一种使用的是包内的另一个文件，该文件的扩展名固定为 000。这个文件是二进制格式的，虽然微软并没有公开其格式，不过网络上已经有人探索出来了相当部分，请参看&lt;a href="http://bardolph.ling.ohio-state.edu/cgi-bin/dwww/usr/share/doc/cabextract/wince_cab_format.html"&gt;这里&lt;/a&gt;。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;还有一个人写了一个名为 &lt;a href="http://www.codeppc.com/telechargements/msceinf/MSCEInfEn.zip"&gt;MSCEInf&lt;/a&gt; 的小工具来查看安装信息，可惜我运行它察看一个安装包总是出错。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;尽管我还没有查阅 _setup.xml 的规范，不过既然是 XML 这种可读格式，相信不会很难弄懂。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+Mobile+%e4%bd%bf%e7%94%a8%e7%9a%84+CAB+%e5%ae%89%e8%a3%85%e5%8c%85&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4010.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4010.entry</guid><pubDate>Tue, 18 Sep 2007 09:51:43 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!4010/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!4010.entry#comment</wfw:comment><dcterms:modified>2007-09-18T09:51:43Z</dcterms:modified></item><item><title>开眼界</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3985.entry</link><description>&lt;div&gt;似乎是玩儿概念的：&lt;a href="http://www.microsoft.com/surface/"&gt;http://www.microsoft.com/surface/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%bc%80%e7%9c%bc%e7%95%8c&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3985.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3985.entry</guid><pubDate>Fri, 07 Sep 2007 14:36:43 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3985/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3985.entry#comment</wfw:comment><dcterms:modified>2007-09-07T14:36:43Z</dcterms:modified></item><item><title>乐曲推荐</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3972.entry</link><description>&lt;div&gt;推荐两首鼓乐：《&lt;a href="http://mp3.baidu.com/m?f=ms&amp;amp;rn=&amp;amp;tn=baidump3&amp;amp;ct=134217728&amp;amp;lm=-1&amp;amp;word=+%C5%A3%B6%B7%BB%A2"&gt;牛斗虎&lt;/a&gt;》、《&lt;a href="http://mp3.baidu.com/m?f=ms&amp;amp;rn=&amp;amp;tn=baidump3&amp;amp;ct=134217728&amp;amp;lm=-1&amp;amp;word=+%C7%D8%CD%F5%B5%E3%B1%F8"&gt;秦王点兵&lt;/a&gt;》。 &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e4%b9%90%e6%9b%b2%e6%8e%a8%e8%8d%90&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3972.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3972.entry</guid><pubDate>Wed, 05 Sep 2007 08:17:47 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3972/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3972.entry#comment</wfw:comment><dcterms:modified>2007-09-05T08:17:47Z</dcterms:modified></item><item><title>几个把戏</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3957.entry</link><description>&lt;div&gt;第一个把戏：在手机上玩命令行&lt;/div&gt;
&lt;div&gt;Windows Mobile 系统默认是不带命令行工具，如果你和我一样，喜欢即使没事也要输入 dir 看输出，你可能很想往手机上装一个控制台程序。幸福的事情是，微软自己已经出了这样的工具。下载地址：&lt;a href="http://download.microsoft.com/download/7/6/0/7606be4b-eea7-4515-83a0-81d7d9ac9ce1/WindowsMobilePowerToys.msi"&gt;http://download.microsoft.com/download/7/6/0/7606be4b-eea7-4515-83a0-81d7d9ac9ce1/WindowsMobilePowerToys.msi&lt;/a&gt;。这个安装包里有很多工具，命令行只是其中的一部分，不过对我来说，我目前只需要命令行。安装包解开后，找到 PPC_Command_Shell 目录，里面有一个名为 ARM 的子目录，其中有三个文件：cmd.exe, shell.exe, console.dll。把这三个文件弄到手机上，随便你用什么方法，红外蓝牙或者 USB 都行，然后把 console.dll 移到 \Windows 下，运行 cmd.exe 即可。&lt;/div&gt;
&lt;div&gt;怎么，你不会把 .msi 文件解压？那好，学一下第二个把戏……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;第二个把戏：解压 .msi 文件&lt;/div&gt;
&lt;div&gt;请注意，这个把戏是在电脑上玩的，不是在手机上。长久以来，老汉也一直为解压 .msi 文件而痛苦，WinRAR 可以打开，但解出来的文件名字就很差劲，看不明白。昨天终于搞定了，还是得要微软自家的东西。在命令行下按照以下格式输入：&lt;/div&gt;
&lt;div&gt;msiexec /a &amp;quot;msi 文件名&amp;quot; /qb TARGETDIR=要解压到的目录&lt;/div&gt;
&lt;div&gt;然后到你指定的目录里一看，哈哈，所有的文件都乖乖地出来了。&lt;/div&gt;
&lt;div&gt;这下把命令行装上了吧？哇，你这个小朋友好多事啊，怎么别人都能用，就你不能用？哦，原来你使用的手机是 Windows Mobile 5 啊，别急，看看下一个把戏。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;第三个把戏：让命令行在 WM5 上跑起来&lt;/div&gt;
&lt;div&gt;其实这个把戏是老汉故意留到最后的。即使你按照前面的步骤作了所有的工作，在 Windows Mobile 5 上，运行 cmd.exe 还是不会有任何的动静。这也难怪，那个 Power Toys 本来就是给 Windows Mobile 2003 的系统编制的。不过，微软一向是以兼容性著称的，没有理由在新系统上和我们开这么大的玩笑。诀窍在一个注册表设置上。用你最顺手的注册表编辑器，请注意，这个把戏所说的注册表是手机上的，不是电脑上的，打开 HKEY_LOCAL_MACHINE\Drivers\Console 键，把其下的 OutputTo 值改为 0（原来的值通常是-1）即可。&lt;/div&gt;
&lt;div&gt;这下搞定了吧，还没有啊？老汉先撤了……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%87%a0%e4%b8%aa%e6%8a%8a%e6%88%8f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3957.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3957.entry</guid><pubDate>Wed, 22 Aug 2007 01:35:34 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3957/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3957.entry#comment</wfw:comment><dcterms:modified>2007-08-22T01:35:34Z</dcterms:modified></item><item><title>几个链接</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3880.entry</link><description>&lt;div&gt;&lt;a href="http://www.microsoft.com/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp"&gt;http://www.microsoft.com/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.cnblogs.com/paker/archive/2007/04/14/713357.html"&gt;http://www.cnblogs.com/paker/archive/2007/04/14/713357.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.cnblogs.com/upto/archive/2007/02/14/cellular-emulater-in-wm6sdk.html"&gt;http://www.cnblogs.com/upto/archive/2007/02/14/cellular-emulater-in-wm6sdk.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://soft.shouji56.com/Article/19512.html"&gt;http://soft.shouji56.com/Article/19512.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://symbianexample.com/preprocessing_the_incoming_message"&gt;http://symbianexample.com/preprocessing_the_incoming_message&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://forum.nokia.com/document/Cpp_Developers_Library/GUID-96C272CA-2BED-4352-AE7C-E692B193EC06/html/MMS_Client_MTM_API_Specification4.html"&gt;http://forum.nokia.com/document/Cpp_Developers_Library/GUID-96C272CA-2BED-4352-AE7C-E692B193EC06/html/MMS_Client_MTM_API_Specification4.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%87%a0%e4%b8%aa%e9%93%be%e6%8e%a5&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3880.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3880.entry</guid><pubDate>Sun, 29 Jul 2007 12:46:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3880/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3880.entry#comment</wfw:comment><dcterms:modified>2007-07-29T12:46:05Z</dcterms:modified></item><item><title>用于 PDA 的极品软件</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3908.entry</link><description>&lt;div&gt;手机通过 ActiveSync 连着电脑，电脑放在桌子底下，那根连接线很短，大概只有十厘米，当需要用笔操作手机的时候，不得不弯着腰弓着背地干。难道就没有个可以用电脑操纵手机的软件？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;在网上搜了，用手机操纵电脑的软件倒是不少，可反过来就不多了。找了半天，只有一个。就下载下来了，装上一看，我的乖乖，看来这种产品只有它一个是不需要希奇的。界面美观，操作方便，我想要的功能他都有，简直都没有话说了，估计其他人要做同类的软件，想超越是很难的了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;界面采用了 Microsoft Office 2007 的风格，公平地讲，在我见过的采用同类风格界面的软件里，这个软件对 Ribbon 这种新的界面元素使用的相当老练而最是合理。难能可贵的在于，Office 2007 的风格其实并不适合这种功能不是非常复杂的工具类软件，但是它做到了，化复杂的神奇为简练的神奇。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;软件的名字叫“Pocket Controller Pro”，版本为 6.0。啥时候 Nokia 也出一个类似的软件呢？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e7%94%a8%e4%ba%8e+PDA+%e7%9a%84%e6%9e%81%e5%93%81%e8%bd%af%e4%bb%b6&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3908.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3908.entry</guid><pubDate>Wed, 25 Jul 2007 04:21:17 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3908/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3908.entry#comment</wfw:comment><dcterms:modified>2007-07-25T04:21:17Z</dcterms:modified></item><item><title>CreateFile/CreateFileForMapping，摇摆不定的微软</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3896.entry</link><description>&lt;div&gt;原来的代码里有个类，是为了使用文件映射写的。最初是给 PC 上用的，当应用到 Windows Mobile 上的时候，也没有改动，拿来就用了。后来看文档，发现 Windows CE 系统上有个名为 CreateFileForMapping 的函数，顿时大惊，难道说我老人家原来写的代码有问题？不能工作倒是不太可能，说不定会有性能上的损失？殊未可知。今日有空，心想，顺手把它改了吧，当然，改之前还是要好好地看看文档。于是把 MSDN 里对此函数的描述从上到下看了一遍，看到最后就泄气了，文档的最下头写着：不赞成在 Windows Mobile 设备上使用此 API，请使用 CreateFile。转来转去，又和 PC 一样了，我着个什么急嘛，躺会儿去……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+CreateFile%2fCreateFileForMapping%ef%bc%8c%e6%91%87%e6%91%86%e4%b8%8d%e5%ae%9a%e7%9a%84%e5%be%ae%e8%bd%af&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3896.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3896.entry</guid><pubDate>Sun, 15 Jul 2007 09:41:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3896/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3896.entry#comment</wfw:comment><dcterms:modified>2007-07-15T09:41:34Z</dcterms:modified></item><item><title>F 和 V</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3863.entry</link><description>对 Windows 系统下克隆账户了解的人大概都知道，系统注册表中存储账户相关属性的两个值名，一个叫做 F，一个叫做 V。到底为什么用了这两个字母呢？请记牢，老汉教导说：F 是指“FixedLengthAttributes”，V 是指“VariableLengthAttributes”，切记切记。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+F+%e5%92%8c+V&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3863.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3863.entry</guid><pubDate>Mon, 18 Jun 2007 14:34:05 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3863/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3863.entry#comment</wfw:comment><dcterms:modified>2007-06-18T14:34:05Z</dcterms:modified></item><item><title>IE 6 的无插件模式</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3846.entry</link><description>以前使用 IE 7 的 Beta 版本的时候，记得有个无插件模式，即把浏览器自己赤倮倮地运行起来，不加载任何第三方的扩展程序。今天才发现 IE 6 也有这个功能，使用注册表编辑器，打开以下键：&lt;br&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main，将该键下名为“Enable Browser Extensions”的值的内容从原来的“yes”改为“no”。&lt;br&gt;再打开 IE，即可发现，干干净净！&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+IE+6+%e7%9a%84%e6%97%a0%e6%8f%92%e4%bb%b6%e6%a8%a1%e5%bc%8f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3846.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3846.entry</guid><pubDate>Thu, 14 Jun 2007 12:17:04 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3846/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3846.entry#comment</wfw:comment><dcterms:modified>2007-06-14T12:17:04Z</dcterms:modified></item><item><title>WM5 中快速得到拔卡通知</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3816.entry</link><description>如果你在程序中使用 SHChangeNotifyRegister 这一 API 来得到系统插入或者拔出存储卡的通知消息，你可能会发现，对于拔出操作，通知时间总是姗姗来迟，大概要在 5 秒钟之后才会到来。&lt;br&gt;&lt;br&gt;修改以下注册表项的值，可以缩短此延迟的时间：&lt;br&gt;
[HKEY_LOCAL_MACHINE\System\StorageManager]&lt;br&gt;
&amp;quot;PNPUnloadDelay&amp;quot;=dword:200&lt;br&gt;&lt;br&gt;以上设定的 200 为十六进制，代表了 512 毫秒。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+WM5+%e4%b8%ad%e5%bf%ab%e9%80%9f%e5%be%97%e5%88%b0%e6%8b%94%e5%8d%a1%e9%80%9a%e7%9f%a5&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3816.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3816.entry</guid><pubDate>Sat, 19 May 2007 08:42:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3816/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3816.entry#comment</wfw:comment><dcterms:modified>2007-05-19T08:42:20Z</dcterms:modified></item><item><title>恢复 ConCore 的 DataStore</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3788.entry</link><description>&lt;div&gt;下午需要编译一个 Windows Mobile 上的工程，原来好好的工程文件，突然打不开了，VS2005 报告说，在分析 XML（即工程文件） 时遇到了“灾难性错误”。用文本工具打开工程文件，转到报错的行和列上，没有发现有什么反常的地方，以十六进制的方式查看，也可以看出不是编码方面的问题。把出错的那个标签删除后重新打开，仍然报错，仍然是相同的标签，看来是由于某种原因，导致集成环境失去了对此标签的识别能力。全部删除后，打开正常。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;可是编译后试图运行时，却怎么也无法启动 Windows Mobile 的模拟器。于是怀疑模拟器出了问题，到模拟器程序所在路径下直接运行模拟器管理器，果然，列表里一个映像也找不到了，报告 0x80070002 的错误。用 Error Lookup 可知此错误的含义为“系统找不到指定的文件”。于是想起上次为了能够在绿色环境中正常运行模拟器而作的试验来，搞不好我上次把某个本应该复制的文件剪切走了也未可知。把 FileMon 打开，严密监视其输出，终于发现了一个可疑的条目：“15:21:16 dvcemumanager.e:3152 IRP_MJ_CREATE C:\Documents and Settings\UserName\Local Settings\Application Data\Microsoft\CoreCon\1.0\notification\ FILE NOT FOUND Attributes: Any Options: Open Directory”，同时也回想起上次确实对此 notification 文件夹进行过操作，现在此文件夹却不见了。到清淡男的机器上去看，果然有此路径，而更美妙的事情是，下面只有一个名为 datastore.xsl 的文件，大小仅 1 字节。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;我老人家照猫画虎，创建了个 notification 的文件夹，又在下面创建了一个 0 字节（个人认为，既然 1 个字节能工作，恐怕 0 字节也不碍事）的 datastore.xsl 文件。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;运行模拟器管理器，正常！再运行 VS2005 进行调试，也一切正常！&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;呵呵，实在不明白，微软竟然连这点容错都没有作，要是哪次异常关机导致此文件丢失的话，说不定用户就得抓狂了……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e6%81%a2%e5%a4%8d+ConCore+%e7%9a%84+DataStore&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3788.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3788.entry</guid><pubDate>Mon, 16 Apr 2007 07:56:56 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3788/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3788.entry#comment</wfw:comment><dcterms:modified>2007-04-17T12:31:33Z</dcterms:modified></item><item><title>Windows Vista 操作技巧一则</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3769.entry</link><description>&lt;div&gt;快速切换资源管理器中的文件视图的视图模式：&lt;/div&gt;
&lt;div&gt;按住 Ctrl 键同时滚动鼠标滚轮，可以在不同的模式间进行切换。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+Vista+%e6%93%8d%e4%bd%9c%e6%8a%80%e5%b7%a7%e4%b8%80%e5%88%99&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3769.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3769.entry</guid><pubDate>Tue, 27 Mar 2007 09:40:27 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3769/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3769.entry#comment</wfw:comment><dcterms:modified>2007-03-27T09:40:27Z</dcterms:modified></item><item><title>Windows Vista 中的 GINA 替代品</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3765.entry</link><description>&lt;div&gt;在 Windows Vista 操作系统之前，登录系统的的交互部分是由臭名昭著的 GINA 组件来实现的。而现在，这一情形在 Windows Vista 操作系统中得到了改观，新的系统使用了一种完全不同于 GINA 的方式来管理交互登录。这种方式可能更加适合软件开发的潮流，因为其基础就是大名鼎鼎的 COM。而相关的一个重要的接口，名字为 &lt;span&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms646532.aspx"&gt;ICredentialProvider&lt;/a&gt;。此接口自从出现以来，曾经历了不同的版本，随着 Windows Vista 的发布，最终的面貌得以稳定。网络上有很多人在寻找正确实现此接口（以及相关的其它接口）的方法，其中的一部分人在探索中陷入了迷茫，这很正常，凭着极少数的文档资料而试图驾驭若干种方法调用顺序、结构成员或者函数参数的填充组合，是天才也望而生叹的。&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;好在，微软官方网站上终于出现了介绍这方面的知识的实践性的文章：&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/01/CredentialProviders/default.aspx?loc=zh"&gt;《使用 Windows Vista 的凭据提供程序创造自定义的登录体验》&lt;/a&gt;。&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+Vista+%e4%b8%ad%e7%9a%84+GINA+%e6%9b%bf%e4%bb%a3%e5%93%81&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3765.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3765.entry</guid><pubDate>Tue, 27 Mar 2007 07:42:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3765/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3765.entry#comment</wfw:comment><dcterms:modified>2007-03-27T07:42:19Z</dcterms:modified></item><item><title>Visual Studio 2005 里的流</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3760.entry</link><description>&lt;div&gt;老汉在最开始学习 C++ 的时候，流这个东东就是我的软肋。原因只有一个，这个东西涉及到的要记住的东西太多了，各种各样的输出输入的版本，实在是繁杂的很。最糟糕的是，各个编译器之间好像在实现上总有不一致的地方，在这个编译器里面能用的类到那个编译器里就会无缘无故地不见了。而且 ISO C++ 的头文件还有带扩展名和不带扩展名两种，咱们是些程序的，做产品的，是拿了别人钱的，不能像毛头小青年学习一样，时兴哪个就用哪个，那样是会死人的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;微软一向以兼容性优秀而著称，结果这次老汉用 VC8 编译 VC6 的一个老工程还是遇到了麻烦。开始是说 fstream.h 这个头文件没了，到网上搜去，有高人说要用不带扩展名的那个版本，还要加上 using namespace std。改完了以后又说，strstrea.h 找不到，再到网上搜，无解。看了半天代码也不知道到底哪块儿代码用到了这个头文件，索性注释掉。这下乐子就大了，出来一大堆什么 nocreate 未定义，网上又说了，这个东西好像在 VC8 里没什么替代品，我老人家只好全部注释掉。接着又说 istrstream 类找不到。看来是注释掉 strstrea.h 的后遗症犯了。看了看文档，说这个类现在在 strstream 里。再加上。还有问题，说是，eatwhite() 方法不是类成员，网上依然无解。想了半天，想起来原来还见过一个名叫 ws() 的东西，和流里面的空白有关，看了一下，幸好可用。把原来的 stm.eatwhite() 全部改成了 ws(stm)。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;编译是通过了，运行是不是正常，鬼才知道。直到现在，“流”这个破玩艺儿还在不停地改来改去，而老汉学习它的时候，是在遥远的 1997 年了，十年了，还没有稳定下来，可见是个很难缠的东西，以后还是绕着点走比较好……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Visual+Studio+2005+%e9%87%8c%e7%9a%84%e6%b5%81&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3760.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3760.entry</guid><pubDate>Tue, 27 Mar 2007 00:53:26 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3760/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3760.entry#comment</wfw:comment><dcterms:modified>2007-03-27T00:53:26Z</dcterms:modified></item><item><title>转：Spy++ 的一些内幕</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3741.entry</link><description>&lt;div&gt;事实再一次证明，即使换了再牛的人，做好多事情都会使用相同的方法……&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;参考此链接：&lt;a href="http://blogs.msdn.com/vcblog/archive/2007/01/16/spy-internals.aspx"&gt;http://blogs.msdn.com/vcblog/archive/2007/01/16/spy-internals.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e8%bd%ac%ef%bc%9aSpy%2b%2b+%e7%9a%84%e4%b8%80%e4%ba%9b%e5%86%85%e5%b9%95&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3741.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3741.entry</guid><pubDate>Thu, 15 Mar 2007 14:39:19 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3741/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3741.entry#comment</wfw:comment><dcterms:modified>2007-03-15T14:39:19Z</dcterms:modified></item><item><title>解决 Window Mobile 收不到 LVN_ITEMACTIVATE 通知的问题</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3738.entry</link><description>&lt;div&gt;清淡男今天下午说了，在对话框上的一个 ListView 控件，突然接收不到 WM_NOTIFY/LVN_ITEMACTIVATE 消息了。据了解，之前是可以接收到的，而现在和之前的区别，仅在于把原来的非模态对话框改为了模态对话框。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;饶是老汉见多识广，也一下断不明其中蹊跷。开始以为是焦点设置有问题，但是测试发现分明在接收方向键的时候一切又都正常。后来想起一件事来，才连忙问清淡男，四个方向键中间的那个确定键的虚拟键值是什么，清淡男说好像是回车键。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;老汉顿悟，可不是么，模态对话框中，在通常情况下，即使是聚焦控件，也有几个按键式接收不到的，有：Enter/Return 键、Esc/Escape 键，以及 Ctrl+Break 键。这三种情况会在模态对话框的消息循环里在调用 TranslateMessage 之前被 IsDialogMessage 所处理。这三种键均会导致对话框窗口回调函数收到一个 WM_COMMAND 消息，其中，回车键将导致参数中的命令 ID 为 IDOK，而后两种则导致参数中的命令 ID 值为 IDCANCEL。尤其是最后那个组合键，如果不是像老汉这样的 Windows Guru，恐怕很多人都不知道。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;然而，系统并非没有提供聚焦控件接收这些特殊按键的渠道。一言以蔽之，诀窍就在一个不怎么知名的消息 WM_GETDLGCODE 上。如果有遇到了相同问题的朋友，不妨仔细看看这个消息，反正清淡男已经据此搞定了。祝各位好运。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e8%a7%a3%e5%86%b3+Window+Mobile+%e6%94%b6%e4%b8%8d%e5%88%b0+LVN_ITEMACTIVATE+%e9%80%9a%e7%9f%a5%e7%9a%84%e9%97%ae%e9%a2%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3738.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3738.entry</guid><pubDate>Thu, 15 Mar 2007 14:22:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3738/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3738.entry#comment</wfw:comment><dcterms:modified>2007-03-15T14:22:19Z</dcterms:modified></item><item><title>WM5torage —— Card Export II 的完美替代品</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3629.entry</link><description>为了让插上存储卡的手机也能作为移动硬盘或者 U 盘来使用，老汉费劲费大了。&lt;br&gt;&lt;br&gt;以前在网上找到一个软件可以做这件事情，名叫 Card Export II，开始的版本是 2.17，在我的 Dopod 838 上根本就不能用。忍耐了很长时间后，找到了版本 2.19（有兴趣的朋友请参看&lt;a href="http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3340.entry"&gt;这里&lt;/a&gt;），总算是可以用了。但是这个软件有几个缺点，第一，也是最主要的，序列号极其难找，当然了，归根结底是因为它是收费软件，而且费用还不低，第二，兼容性好象还是有点问题，我往上面复制 1GB 左右的文件，尝试了总有五六次，手机总会在复制到一半左右的时候死机。到后来试用时间一到，我马上就把它删除了。&lt;br&gt;&lt;br&gt;今天无意之中发现了另一款功能一样的软件，名叫 WM5torage（请注意，是 5，不是 S）。这个软件的优点有：1、个头极小；2、免费。这两点就已经足以让我向大家激励推荐了，下载地址在&lt;a href="http://www.modaco.com/index.php?automodule=downloads&amp;amp;showfile=1702"&gt;这里&lt;/a&gt;。不过要先在那个论坛注册。&lt;br&gt;&lt;br&gt;兼容性我还没有测试，希望没有问题。&lt;br&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+WM5torage+%e2%80%94%e2%80%94+Card+Export+II+%e7%9a%84%e5%ae%8c%e7%be%8e%e6%9b%bf%e4%bb%a3%e5%93%81&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3629.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3629.entry</guid><pubDate>Mon, 05 Feb 2007 03:07:53 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3629/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3629.entry#comment</wfw:comment><dcterms:modified>2007-02-05T03:09:29Z</dcterms:modified></item><item><title>Spy++ 8.00.50727 中的 BUG</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3624.entry</link><description>&lt;div&gt;昨天晚上为 &lt;a href="http://www.somedoc.com/danspy/"&gt;DanSpy&lt;/a&gt; 增加在窗口树中按条件查找并定位某一窗口的功能，查找的条件可以是窗口句柄、窗口标题或者窗口类名。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;实现的时候把 Spy++ 8.0 启动起来，想先研究一下它的功能，结果发现在按标题“Default IME”或者“CiceroUIWndFrame”查找窗口时一个也找不到，再试其他的，也是有的可以，有的不可以；我把 Spy++ 6.0 拿出来测试，就没有任何问题。不知道微软的程序员把什么给改错了，呵呵。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Spy%2b%2b+8.00.50727+%e4%b8%ad%e7%9a%84+BUG&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3624.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3624.entry</guid><pubDate>Tue, 30 Jan 2007 01:18:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3624/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3624.entry#comment</wfw:comment><dcterms:modified>2007-01-30T01:18:22Z</dcterms:modified></item><item><title>Windows 新发现</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3618.entry</link><description>&lt;div&gt;不得不说，Windows 真是个博大精深的系统。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;用了这么多年，今天才发现，Windows 里弹出的消息框虽然不能用鼠标将其中的内容选中复制下来，竟然可以直接 Ctrl+C 把里面的文字全部复制到剪贴板了，以前遇到这种情况还得动用 DanSpy 呢。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;以下为测试步骤：&lt;/div&gt;
&lt;div&gt;1、打开记事本&lt;/div&gt;
&lt;div&gt;2、随便输入一些文本&lt;/div&gt;
&lt;div&gt;3、点击窗口右上角的关闭按钮&lt;/div&gt;
&lt;div&gt;4、程序弹出一个询问用户是否保存的消息框&lt;/div&gt;
&lt;div&gt;5、按 Ctrl+C 键&lt;/div&gt;
&lt;div&gt;6、点击取消&lt;/div&gt;
&lt;div&gt;7、在编辑区内按 Ctrl+V 键&lt;/div&gt;
&lt;div&gt;8、看到什么了？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Windows+%e6%96%b0%e5%8f%91%e7%8e%b0&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3618.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3618.entry</guid><pubDate>Sat, 27 Jan 2007 01:49:19 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3618/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3618.entry#comment</wfw:comment><dcterms:modified>2007-01-27T01:49:19Z</dcterms:modified></item><item><title>Perforce —— 适用于个人的商业性版本控制系统？</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3601.entry</link><description>&lt;div&gt;在来到现在的公司之前，基本上没有使用过什么版本控制系统。来了之后，才发现这种东西确实要比每天把工程打个包来的方便些。公司使用的一直是 Visual SourceSafe，随 Visual Studio 带的那个家伙。据说微软自己是从来不用这个东西的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;后来 CVS 和 SVN 也用过一点，感觉不是太好。主要是图形化客户端太差，而且 CVS 的客户端来要让安装什么 Python 和 Tcl/Tk 之类的东西。SVN 的那个著名的客户端（就是那只乌龟），不知道是不是我的使用的版本的问题，好像有资源泄漏，出现过自己的菜单在资源管理器中显示不正常的问题，把资源管理器搞得奇慢无比；而且会导致其他进程中也加载属于它的若干个动态链接库，似乎挂接了全局钩子。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;最近才听说有个叫 Perforce 的软件，介绍说它的主要特点之一是速度极快。到它的首页上，看到有一种试用版本的下载，下载后试用了一下，尚未体会到心动之处。本地文件（工作区，Workspace）的组织呈现方式与 SourceSafe 区别较大，更接近于 WinCvs，用惯了 SourceSafe 的人（比如我）最开始可能会不太适应。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;试用版功能上有最多两个用户以及最多五个工作区的限制，不过对于个人使用来讲，这两个限制好像都算不了什么。用户么，两个已经够用了；工作区么，咱可以把所有的工程都放到一个根目录下。况且，没有时间限制已经相当令人愉快了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Perforce+%e2%80%94%e2%80%94+%e9%80%82%e7%94%a8%e4%ba%8e%e4%b8%aa%e4%ba%ba%e7%9a%84%e5%95%86%e4%b8%9a%e6%80%a7%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e7%b3%bb%e7%bb%9f%ef%bc%9f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3601.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3601.entry</guid><pubDate>Mon, 08 Jan 2007 03:27:15 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3601/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3601.entry#comment</wfw:comment><dcterms:modified>2007-01-08T03:27:15Z</dcterms:modified></item><item><title>C++ 代码美化工具</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3551.entry</link><description>&lt;div&gt;好些时候，要学习从网上或者别的地方找的一些源代码，可是往往写代码的人使用了一种和自己颇不相同的编码风格，看起来相当不舒服。老汉原来就经常做这种冤枉活儿，一边看他的代码，一边手动调整缩进、空格、换行等等。这种方法对小量的代码还可以，对付几千行的程序就会力不从心。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;于是今天上网上找，有没有能够自动按照我配制好的风格来格式化源代码的工具。结果下来，还真有几个。从这些工具各自在线显示的格式化结果或者界面截图来看，有两款不错，一个名叫 SourceFormatX，有的网站介绍说这是国人写的（记得原来奶牛弟曾经用过这个程序），不过防盗版的工作做得相对好很多，居然找不到个像样的破解；像老汉这种不是很想花钱的人，想了想还是放弃了。另一个叫 SourceStyler C++，这个不是国人写的，所以就打着盗版有理的旗号搞了个注册机，试了一下，效果虽然不是非常满意，但也已经相当满意了。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;不过从下载的安装包来看，SourceFormatX 要比 SourceStyler C++ 小很多，前者不到 1MB，后者却要 8MB 之多，而且前者支持的源代码语言众多，后者却即使从名字上来看，也能知道是只支持 C++ 一种。实在不知道老外的程序怎么写的&lt;img src="http://sluttery.spaces.live.com/mmm2006-10-27_23.09/rte/emoticons/smile_regular.gif"&gt;，不过在风格控制方面要比 SourceFormatX 多不少选项。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+C%2b%2b+%e4%bb%a3%e7%a0%81%e7%be%8e%e5%8c%96%e5%b7%a5%e5%85%b7&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3551.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3551.entry</guid><pubDate>Sun, 03 Dec 2006 03:44:46 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3551/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3551.entry#comment</wfw:comment><dcterms:modified>2006-12-03T03:44:46Z</dcterms:modified></item><item><title>VirtualProtect() 在 API 拦截中的问题</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3501.entry</link><description>&lt;div&gt;进程内的 API 拦截是比较常见的一种技术，通常是采用挪移的方法，把原代码复制到另外一块预留好的代码空隙处，然后将原函数的入口处指令改为调转至我们自己的实现，然后在自己的实现里根据情况再看要不要执行原来的代码。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;今天中午虞美人调试程序的时候出现了怪事，在拦截 API 的那函数里，竟然发现在函数内访问参数时会出现访问违例！更奇怪的是，这个问题仅在某些 Windows Server 2003 英文版上出现。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;经过反复调试和仔细分析，发现这一问题的根源是由于在上面不远处调用了 VirtualProtect()，以便能对代码中预留出的空间进行改写。如果不进行这个调用，那么就无法保存原函数的前面的指令，如果调用了它，就会导致本函数自己访问参数（或者局部变量）引发违例。猛然想起该函数虽然有改变保护模式的起始地址，但由于硬件的原因，真正影响到的是该地址所处的至少一个内存页。由于拦截函数自身和空隙的间距太近，可能处在同一页上，于是对空隙地址处的访问修改同时也影响到了函数自身。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;可是怎么修改呢？总不能硬在其中插上 64K 的垃圾代码吧？灵光一闪，突然记起 #pragma 来，可以指定代码所处的代码节的名字。于是把空隙函数使用 #pragma code_seg() 指令包围了起来，编译后果然问题不再出现。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;但别的操作系统为什么不会有事，尚不知道，大概是操作系统自身作了处理。&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+VirtualProtect()+%e5%9c%a8+API+%e6%8b%a6%e6%88%aa%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3501.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3501.entry</guid><pubDate>Thu, 09 Nov 2006 14:13:49 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3501/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3501.entry#comment</wfw:comment><dcterms:modified>2006-11-09T14:13:49Z</dcterms:modified></item><item><title>遍历/关闭其他进程内的句柄</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3500.entry</link><description>&lt;div&gt;作为对这一段时间集中炮火攻击移动开发的中场休息，今天又温习了一下 Windows 平台。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;长期以来一直对 &lt;a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx"&gt;Process Explorer&lt;/a&gt; 枚举所有进程的句柄列表以及强行关闭其他进程内的句柄的能力持敬畏的态度，今日热情一上来就很想搞一搞。从以往的经验来看，通常有两种途径，一种是调用了未公开的 Native API（此处还想啰嗦几句，Native API 一直被广泛翻译为“本机 API”，个人认为十分不妥，老汉推荐的译法是“原生 API”，不知道有没有拥护者），一种是借助于驱动的力量。尽管早就知道 Process Explorer 体内带有一个驱动程序，但我还是抱有幻想，觉得这两个功能不一定非要通过驱动程序才能实现。带着这个幻想，老汉踏上了发现之旅。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;还是先从 Native API 开始。用依赖查看工具观察的结果表明，主程序 EXE 文件并未静态链接 NTDLL.DLL，也就是说，如果有对 Native API 进行调用的话，一定是动态寻址的。正好，Process Explorer 有从进程空间搜集字符串的功能，以子之矛攻子之盾如何？结果下来还真是有收获，找到几个看起来比较可疑的 API，逐个到网络上查询其具体功能。呵呵，还真是有靠谱的。不过这只涉及到遍历句柄，还没有找到关闭句柄的。于是我想，如果我要写这个功能的函数，会起个什么名字呢？（不要小看这一招，已经好几次帮了我的忙了）把我想到的函数名字当往上搜索，哈哈，果真是“莫道君行早，更有早行人”啊，确是存在有实现此功能的函数，虽然并不完全适合。共有两种方法，其中一种和我原来想到的下下策一样，即使用远程线程（由于 CloseHandle() 函数的原型极其符合线程回调函数的原型，所以这个方法也是相当简洁的）。另外一种方法嘛，呵呵，足以让老汉大吃一惊了，我老人家浸淫 Windows 这么多年，竟然愣是不知道！&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;尾声。Native API 调用起来比较费劲，因为需要到处去找数据结构的定义、常量的数值，以及函数的原型。不过经过一下午的折腾，好歹算是找到了一个比较对路的方向。下一步就是编码验证了。&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e9%81%8d%e5%8e%86%2f%e5%85%b3%e9%97%ad%e5%85%b6%e4%bb%96%e8%bf%9b%e7%a8%8b%e5%86%85%e7%9a%84%e5%8f%a5%e6%9f%84&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3500.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3500.entry</guid><pubDate>Thu, 09 Nov 2006 13:53:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3500/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3500.entry#comment</wfw:comment><dcterms:modified>2006-11-09T14:53:08Z</dcterms:modified></item><item><title>如何访问类的私有成员</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3463.entry</link><description>&lt;div&gt;这个问题折磨我一段时间了。在 Symbian 系统下编程，此问题显得更加是个问题，因为系统的功能也是以类的方式提供的。某些时候，由于你需要完成一些很特殊的任务，你明明知道某个类的某个成员可以很容易地帮助你实现目标，可是你却不能使用它，因为它是私有的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;当然，你也可以采用一些其他的暴力手段来解决这个问题，正如我在“&lt;a href="http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3420.entry"&gt;暴力倾向&lt;/a&gt;”中所提到的那样，不过，程序看起来总归很难看。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;聪明的老汉后来想到了一个办法，那就是把原来的头文件处理一下，用个文本编辑器，尤其是查找替换的功能比较强大的那种，把原来的 private 声明统统换成 public 的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;不过这样也会有点问题，首先就是很累，一个头文件一个头文件地去处理。而且，如果你安装了更新版本的 SDK，那你就需要从头再来过。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;好在事情到这里已经快接近尾声了，原因很简单，老汉是个聪明的老汉。既然本质上就是干文本替换的工作，那预编译器岂不是一个更好的选择吗？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;所以，老汉的终极解决方案就是，在包含头文件之前定义如下两个宏：&lt;/div&gt;
&lt;div style="border-right:#ff6600 1px solid;border-top:#ff6600 1px solid;background:gray;overflow:scroll;border-left:#ff6600 1px solid;width:100%;border-bottom:#ff6600 1px solid"&gt;&lt;pre&gt;&lt;font face=FIXEDSYS&gt;
#define private public
#define class struct
&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;有的英雄可能要问了，只定义第一个岂不是就足够？差矣！因为第一个搞不定下面这种情况：&lt;/div&gt;
&lt;div style="border-right:#ff6600 1px solid;border-top:#ff6600 1px solid;background:gray;overflow:scroll;border-left:#ff6600 1px solid;width:100%;border-bottom:#ff6600 1px solid"&gt;&lt;pre&gt;&lt;font face=FIXEDSYS&gt;
class CFoo
{
    int m_iCount;
};&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;哈哈，有需求的朋友们，爽一下吧？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e5%a6%82%e4%bd%95%e8%ae%bf%e9%97%ae%e7%b1%bb%e7%9a%84%e7%a7%81%e6%9c%89%e6%88%90%e5%91%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3463.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3463.entry</guid><pubDate>Sat, 28 Oct 2006 08:10:08 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3463/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3463.entry#comment</wfw:comment><dcterms:modified>2006-10-28T08:10:08Z</dcterms:modified></item><item><title>类，还是函数？</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3432.entry</link><description>&lt;div&gt;这是昨天（？）和杰弗里·马交谈的时候提出的一个话题，完整的问题是，在设计一个系统（例如操作系统）的时候，向外提供的接口是采用类的方式好，还是采用函数的方式好？在此之前，我不是没有想过这个问题，不过却可以肯定地说，没有认真地，深入地思考这个问题，因为我的心里一直是存在着固定的一个答案的。我一直认为，在接口的设计上采用函数是一种更好的选择。但是杰弗里·马问我：为什么？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;是的，为什么呢？&lt;/div&gt;
&lt;div&gt;我觉得，不外乎以下几个原因。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;首先，人们更习惯于使用函数的方式。函数是过程式编程语言中所采用的最常见的功能块之间的交互方式。在这里，函数这一名词采用其最宽泛的含义，也即该术语在 C 语言中的定义，同时包括了其他语言中所使用的过程/函数/子函数/子例程等术语的含义。因而，函数这种方式被广泛地应用于 C、Pascal、Basic 甚至宏汇编语言中。它是程序员最常见的，最惯用的编程方式，其中惯用，包括了惯于使用和惯于使用此方式实现两个方面。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;其次，函数的使用要比类的使用更加简单。相比较而言，函数的使用要远简单于类的使用，这是由类的本质决定的。类是面向对象思想的代表产物，其中心思想也充分体现着面向对象设计的精神：以数据为中心，进行基于数据之上的操作的集中封装。然而也正因为此，通常一个类的复杂度要高于一个单一的函数，类中的数据与方法之间的耦合以及不同方法间的耦合性通常会较大，导致完全了解一个类甚至仅是一个类的方法的工作量都要远远大于了解一个函数的工作量。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;另外一个很重要的原因是，由于类对象的内存布局（如何安排类的成员变量以及虚函数表的指针等的位置）等原因，类的改动会给类的使用者在无意之中带来巨大的麻烦，通常是需要随着类自身的改动而重新编译已有的程序，否则的话，后果一般都是程序的立即崩溃。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;最后，函数的形式更适合不同种类的语言之间进行调用。进入到 Windows 时代后，动态链接库的形式越来越被广大的程序员所使用，而同时，运行于 Windows 之上的开发语言的种类要远远超过运行于其它平台的语言。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;此处仅就编译型的开发语言而言。在 UNIX 系统上虽然也有相当丰富的开发语言，但除了 C/C++ 之外绝大多数都是脚本语言，而且对其他模块的调用也通常使用 C/C++ 作为桥梁；与之不同的是，Windows 平台上有许多编译型语言，除了 C/C++，最常见的编译型语言大概就是 Pascal 了，Borland 公司的 Delphi 产品是采用该语言的最著名的集成开发环境。甚至连 Basic 这种老牌的解释型语言都在微软的不断努力下在 Visual Basic 5.0 的时候几乎成为了编译型语言。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;这些语言无论是调用系统的 API 还是其他的模块，大都是以动态链接库的形式进行调用的。由于 C++ 编译器的历史原因，编译之后的类的成员的命名在不同的编译器之间存在非常大的差异，而同时 C++ 标准本身在这一方面又从来没有给出过指导性的统一规范，从而导致在符号查找上存在着几乎是难以克服的障碍。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;其实，也正是因为 C++ 类的这些固有问题，才导致以对象形式复用代码的技术形成为 COM（或者类似 COM 的技术，如 Mozilla 工程中的 XPCOM，Symbian 系统中的 ECOM，以及庞大的 Corba） 这种形态。所以，在了解了 COM 的基本规则之后，如果能弄清楚为什么会要采用这样的规则，会使你深入地明了以上所述的内容。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;如果有时间，下次讨论以下话题：在实现的时候如何兼取类和函数二者的优点？&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;附：仓促写成，恐有不周，请大家指教。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e7%b1%bb%ef%bc%8c%e8%bf%98%e6%98%af%e5%87%bd%e6%95%b0%ef%bc%9f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3432.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3432.entry</guid><pubDate>Thu, 19 Oct 2006 14:17:09 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3432/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3432.entry#comment</wfw:comment><dcterms:modified>2006-10-19T14:49:21Z</dcterms:modified></item><item><title>Symbian 下更强的 SDL</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3363.entry</link><description>&lt;div&gt;虽然从某个版本开始，SDL 的官方发布包中已经包含了对 Symbian 的支持，但是其功能相对较弱，而且没有对音频进行支持。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;网络上有一个开源的项目，把 Id software 的经典游戏 Doom 移植到了 Symbian 平台（&lt;a href="http://koti.mbnet.fi/mertama/"&gt;http://koti.mbnet.fi/mertama/&lt;/a&gt;），其底层引擎即是 SDL，我惊奇的发现，这个版本的 SDL 是支持音频的，而且在对 Symbian 的设备的支持上好像也增加了不少。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;老汉还没有搞明白这两个版本（官方版本和 Doom 版本）究竟谁先谁后，但是显然其核心是同一份代码。看起来好像 SDL 官方对 Symbian 的支持代码似乎是取了 Doom 中的 SDL 变体发展过程中的某一个阶段成果，但实现并没有齐头并进。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Doom 中的 SDL 虽然功能较强，但是编译工作变得增加了不少，尤其是增加了对其他几个部件的依赖，主要有 EAudioLib、SDL_epocruntime 以及 futils，前几个组件在 Doom 的包中是包含着的，后一个则需要在其页面上单独下载。在编译 SDL 之前应该正确设置这几个组件的包含路径，而且，编译 SDL 的示例工程则需要这几个组件已经编译完成，否则会出现链接错误。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;最后需要注意的一点是，Doom 中的 SDL 变体是基于 SDL 1.2.0 的，而不是最新的 SDL，如果你要同时使用最新的 SDL 的功能和更强的 Symbian 的支持，可能需要你自己动手。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+Symbian+%e4%b8%8b%e6%9b%b4%e5%bc%ba%e7%9a%84+SDL&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3363.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3363.entry</guid><pubDate>Fri, 22 Sep 2006 09:25:04 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3363/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3363.entry#comment</wfw:comment><dcterms:modified>2008-04-04T01:14:04Z</dcterms:modified></item><item><title>编译 Symbian 下可用的 SDL</title><link>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3357.entry</link><description>&lt;div&gt;SDL 是宣称支持 Symbian 平台的。不过，如果你计划把下载下来的 SDL 代码包解开编译就能看到效果，那就很可能会失望。据我的了解，这样的失望概率大概要在 90% 以上。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;SDL 自带的 GrayWin 例子，会一声不响地退出，没有任何可以帮助你得到改进信息的提示。如果你足够仔细，可能会在调试器中看到某个 Panic 的数值，然而，那是没有任何价值的。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;经过老汉不懈的探索，终于发现了 SDL 里原来的代码中存在的问题。备忘如下。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;1、SDL.mmp 文件中缺少了 cpuinfo\SDL_cpuinfo.c，需要补充进去&lt;br&gt;2、需要对 SDL_epocvideo.cpp 文件进行必要的修改，其中有一个极为严重的 BUG，以下语句：&lt;/div&gt;
&lt;div&gt; User::LeaveIfError(Private-&amp;gt;EPOC_WsWindow.Construct(Private-&amp;gt;EPOC_WsWindowGroup,WindowClientHandle));&lt;/div&gt;
&lt;div&gt;应该改为：&lt;/div&gt;
&lt;div&gt; User::LeaveIfError(Private-&amp;gt;EPOC_WsWindow.Construct(Private-&amp;gt;EPOC_WsWindowGroup,WindowClientHandle&lt;font color="#ff0000"&gt;+1&lt;/font&gt;));&lt;br&gt;按照 Symbian 的文档，窗口句柄必须保证唯一性，WindowClientHandle 已经在前面的代码中被用于 WindowGroup 的句柄，而 WindowGroup 其实是一种特殊的窗口，所以在此是不可以原封不动地作为要创建的窗口的句柄的。此代码最初好像是针对 Nokia 9210 写的，如果 Nokia 9210 上这样能够运行的话，也并不能证明该代码的正确性，只能说 Nokia 9210 的实现违背了 Symbian 的约定。&lt;br&gt;3、在 SDL_epocvideo.cpp 中加入对自己的设备的屏幕分辨率的支持。共有两处，一是在 EPOC_VideoInit() 函数中，另一则是在 EPOC_SetVideoMode() 函数中。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;当然，graywin.c 也需要做点小小的改动，把代码里写定的窗口宽高由原来的值改为符合你的 Symbian 设备的值。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;经过上面的步骤，就可以编译运行了（在 S60 2.x SDK 下测试 GrayWin 通过）。&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3848887354281525204&amp;page=RSS%3a+%e7%bc%96%e8%af%91+Symbian+%e4%b8%8b%e5%8f%af%e7%94%a8%e7%9a%84+SDL&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sluttery.spaces.live.com&amp;amp;GT1=sluttery"&gt;</description><comments>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3357.entry#comment</comments><guid isPermaLink="true">http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3357.entry</guid><pubDate>Wed, 20 Sep 2006 06:01:12 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sluttery.spaces.live.com/blog/cns!3569FEA80C717FD4!3357/comments/feed.rss</wfw:commentRss><wfw:comment>http://sluttery.spaces.live.com/Blog/cns!3569FEA80C717FD4!3357.entry#comment</wfw:comment><dcterms:modified>2006-09-20T06:09:21Z</dcterms:modified></item></channel></rss>