﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-cexer</title><link>http://www.cppblog.com/cexer/</link><description>cexer</description><language>zh-cn</language><lastBuildDate>Wed, 22 Apr 2026 13:42:31 GMT</lastBuildDate><pubDate>Wed, 22 Apr 2026 13:42:31 GMT</pubDate><ttl>60</ttl><item><title>GUI框架：消息检查者</title><link>http://www.cppblog.com/cexer/archive/2009/11/22/101591.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Sat, 21 Nov 2009 18:36:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2009/11/22/101591.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/101591.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2009/11/22/101591.html#Feedback</comments><slash:comments>40</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/101591.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/101591.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 紧接上话：GUI框架：谈谈框架，写写代码 。上文将消息框架分为几个部分，这篇博文实现其中的消息检查者。在此之前首先得感谢一下各位酱油众。无论你们是看热闹的还是砸场子的，你们的围观都令我的博文增光不少。特别要感谢那几位打架的神仙，你们使上篇博文真正变得有思想交锋的精彩。我觉得你们的那些想法和争论都非常有价值，建议你们不要只让它们在这个角落里藏着，都写到自己的博客上去让更多的人看到吧。走过路过不要错过，有钱的捧个钱场，没钱的继续挥舞你的酱油瓶加油呐喊！&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2009/11/22/101591.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/101591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2009-11-22 02:36 <a href="http://www.cppblog.com/cexer/archive/2009/11/22/101591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GUI框架：谈谈框架，写写代码</title><link>http://www.cppblog.com/cexer/archive/2009/11/15/100988.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Sun, 15 Nov 2009 10:09:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2009/11/15/100988.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/100988.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2009/11/15/100988.html#Feedback</comments><slash:comments>176</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/100988.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/100988.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在学习别人的框架和自己的实现过程中有很多感悟。自己写过的那些代码很多都消失在硬盘的海洋里了，但那些挑灯苦想来的感悟还在。在它们也消失之前，我想利用空闲时间把这些觉得有点用处的经验写出来。按照实现一个 GUI 框架的具体思维递进过程来阐述实现一个 GUI 框架的具体思维递进过程。这样说好像有点递归，简单地解释就是这一系列日志不是想用《记忆碎片》那样错乱的叙述方式来说明一个多有意思的故事，而是尽量简单自然地记录一下写 GUI 框架过程中我的思考。这个递进过程也就是实现一个 GUI 框架的过程，一系列日志之后，我们将会看到一个长得漂亮养眼，极富弹性，能干又节约的 GUI 框架。&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2009/11/15/100988.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/100988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2009-11-15 18:09 <a href="http://www.cppblog.com/cexer/archive/2009/11/15/100988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写了一个mircro XML解析器，附源代码</title><link>http://www.cppblog.com/cexer/archive/2008/08/22/59662.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Fri, 22 Aug 2008 08:56:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/08/22/59662.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/59662.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/08/22/59662.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/59662.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/59662.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mirco 的意思是比 tiny 还要 tiny。<br><br>　　GUI 模板用 XML 做是最合适的。方便嵌入脚本，方便编辑修改，方便嵌入皮肤描述，用 XML 做模板，写起 GUI 编辑器也要方便得多。而市面上流行的一些 XML 多多少少有点不满意，MSXML 字符串的效率，TinyXML 的代码风格等等，所以自己写了一个简单的，自给自足。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/08/22/59662.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/59662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-08-22 16:56 <a href="http://www.cppblog.com/cexer/archive/2008/08/22/59662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抛弃了上一个 GUI 消息机制，重写了一个更灵活高效的</title><link>http://www.cppblog.com/cexer/archive/2008/08/18/59285.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Mon, 18 Aug 2008 14:19:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/08/18/59285.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/59285.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/08/18/59285.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/59285.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/59285.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 抛弃了上一个消息机制，因为它的实现不得不多用了几个模板函数，在使用的时候有代码膨胀的现象。虽然其程度不如　win32gui，SmartWin，不过因为本人有点极端，所以相当地不满意。于是又开始写一个新的消息机制，它的外表看起来像是 SmartWin++ 和 AWT 的混血儿。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/08/18/59285.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/59285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-08-18 22:19 <a href="http://www.cppblog.com/cexer/archive/2008/08/18/59285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各 GUI 框架的 COMMAND_RANGE_HANDLER（范围 ID 的命令消息统一处理）</title><link>http://www.cppblog.com/cexer/archive/2008/08/07/58262.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Thu, 07 Aug 2008 10:00:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/08/07/58262.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/58262.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/08/07/58262.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/58262.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/58262.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有时候在界面上的一系列相关控件，它们作为一组控件起相互协作提供一个功能，则在事件处理的时候，给这一组的控件仅提供一个事件处理程序，要比给每一个单独的控件都提供一个事件处理程序要简单得多，逻辑也更清楚。<br>　　GUI 框架就有可能提供这样一个接口，客户端只需要对这个接口提供控件组的开始 ID 和 结束 ID （以及通知消息的 ID），GUI 框架就能自动地把这一组控件的消息映射到某一个消息处理函数。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/08/07/58262.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/58262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-08-07 18:00 <a href="http://www.cppblog.com/cexer/archive/2008/08/07/58262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己写的一个GUI框架的消息机制</title><link>http://www.cppblog.com/cexer/archive/2008/08/06/58169.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Wed, 06 Aug 2008 09:54:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/08/06/58169.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/58169.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/08/06/58169.html#Feedback</comments><slash:comments>39</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/58169.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/58169.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我看过一些几个开源的框架的源代码，包括声句显赫的 WTL,win32gui 和 SmartWin，还有一些不知名但很优秀的，包括 jlib2（ java AWT 在 C++ 上的移植  ），FLTK （比较小跨平台），甚至还曾鼓起勇气去看过 QT 那 n 万行的代码（当然没看明白）。<br>　　看这些库都是为了“师夷长技“，因为我自己非常喜欢写 GUI 框架，没完没了反反复复地写。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/08/06/58169.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/58169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-08-06 17:54 <a href="http://www.cppblog.com/cexer/archive/2008/08/06/58169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转一个程序员经典笑话：射你自己的脚</title><link>http://www.cppblog.com/cexer/archive/2008/07/09/55685.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Wed, 09 Jul 2008 01:28:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/07/09/55685.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/55685.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/07/09/55685.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/55685.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/55685.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 五花八门的计算机语言常常使我们程序员搞不清正在使用的是哪一种。下面的一次小型会议将有助于澄清你的疑惑。任务：射你自己的脚。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/07/09/55685.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/55685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-07-09 09:28 <a href="http://www.cppblog.com/cexer/archive/2008/07/09/55685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程相关的单件模式（Thread-Specific Singelton）</title><link>http://www.cppblog.com/cexer/archive/2008/07/08/55670.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Tue, 08 Jul 2008 15:22:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/07/08/55670.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/55670.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/07/08/55670.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/55670.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/55670.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 单键（Singelton）模式可以说是众多设计模式当中，理解起来最容易，概念最为简单的一个。并且在实际的设计当中也是使用得又最为频繁的，甚至有很多其它的模式都要借助单键才能更好地实现。然而就是这样被强烈需求的“一句话模式”（一句话就能阐述明白），虽然有无数的牛人浸淫其中，至今也没有谁鼓捣出一个完美的实现。我小菜鸟一只自然更不敢逢人便谈单键。不过这个贴的主题是跟单键模式是密不可分的。<br><br>　　什么又叫做“线程相关的单键模式”呢？<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/07/08/55670.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/55670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-07-08 23:22 <a href="http://www.cppblog.com/cexer/archive/2008/07/08/55670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如果建筑师像程序员一样工作</title><link>http://www.cppblog.com/cexer/archive/2008/07/07/55518.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Mon, 07 Jul 2008 03:46:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/07/07/55518.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/55518.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/07/07/55518.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/55518.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/55518.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 与客户打交道的过程当中，我有一个体会，其实程序员是面向上帝编程的职业。这些上帝们自己并不是万能的，然而他们的需求却是万能的，并且你无法从技术角度去给他们解释：其实万能的需求最终是万万不可能实现的，不是因为自己解释不了，而是因为他们会坚定地认为：一切皆有可能。<br><br>　　转一个老外的笑话《如果建筑师像程序员一样工作》，这个笑话里包含了多少程序员的辛酸哪！<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/07/07/55518.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/55518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-07-07 11:46 <a href="http://www.cppblog.com/cexer/archive/2008/07/07/55518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++编译期函数/变量检测技术，仿真VC关键字__if_exists</title><link>http://www.cppblog.com/cexer/archive/2008/07/06/55484.html</link><dc:creator>cexer</dc:creator><author>cexer</author><pubDate>Sun, 06 Jul 2008 14:03:00 GMT</pubDate><guid>http://www.cppblog.com/cexer/archive/2008/07/06/55484.html</guid><wfw:comment>http://www.cppblog.com/cexer/comments/55484.html</wfw:comment><comments>http://www.cppblog.com/cexer/archive/2008/07/06/55484.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/cexer/comments/commentRss/55484.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cexer/services/trackbacks/55484.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: VC当中有一个鲜为人知的关键字，除了微软自己的代码，我从未在任何地方看到有人用过它。虽然它的功能很强大，不过除非设计上的问题或是一些无法排除的困难，否则几乎从不会需要用到它的功能。但是有时候，它确实能作为一个最简单的解决方案而让某些设计过程事半功倍。<br><br>　　借用 CCTV10《走近科学》的语气：那么这个神秘的关键关键字到底是什么呢？它又实现了什么神奇的功能呢？<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/cexer/archive/2008/07/06/55484.html'>阅读全文</a><img src ="http://www.cppblog.com/cexer/aggbug/55484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cexer/" target="_blank">cexer</a> 2008-07-06 22:03 <a href="http://www.cppblog.com/cexer/archive/2008/07/06/55484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>