﻿<?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++博客-星星点灯-最新评论</title><link>http://www.cppblog.com/hongsion/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Sun, 08 Jun 2008 10:19:03 GMT</pubDate><lastBuildDate>Sun, 08 Jun 2008 10:19:03 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 关于windows、线程、消息的一点体会</title><link>http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78886</link><dc:creator>rico</dc:creator><author>rico</author><pubDate>Fri, 03 Apr 2009 14:40:00 GMT</pubDate><guid>http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78886</guid><description><![CDATA[另外，PostThreadMessage，都不可以带窗口Handle的喔。当然，如果是发给窗体的，微软认为，postmessage就可以了。这就让人纳闷了，我消息不是直接发给窗体的，而是直接发给一个线程的，虽然那个窗体属于某个线程，并最终会被dispatch到对应的窗口，因为操作系统自己也登记了窗口属于那个线程(博主的推测）。<br><br>所以微软想开发者，老老实实的，你要发消息到另外一个窗口，不用告诉我窗口所在的线程，告诉我窗口句柄就可以了，我（os）晓得该怎么转发，不用你脱了裤子放屁（对我os来说）。<br><br>但是，如果程序自己保存得有窗口所在线程的Handle，你postthreadmessage就不消到操作系统查map，岂不是快些？不过感觉这是微软的惯例了，尽量封装多一点，封装死一点，这样系统看起来更复杂和高深。同时这样安装盘可以做的更大些，这样，可以可以消耗更多塑料，拉动GDP，而且是围绕微软的GDP。<img src ="http://www.cppblog.com/hongsion/aggbug/78886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hongsion/" target="_blank">rico</a> 2009-04-03 22:40 <a href="http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78886#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 关于windows、线程、消息的一点体会</title><link>http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78884</link><dc:creator>rico</dc:creator><author>rico</author><pubDate>Fri, 03 Apr 2009 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78884</guid><description><![CDATA[有见地！<br><br>The system creates a thread-specific message queue only when the thread makes its first call to one of the User or Windows Graphics Device Interface (GDI) functions&quot;.<br><br>非常有意思的地方，也就是说，程序不能显示的为自己的一个线程创建消息队列。更有意思的是一篇文章说，如果你给一个线程postthreadmessage如果失败，那么对不起，等等再试，直到成功，非常滑稽的设计。最想不通的是，其他操作系统上，你爱怎么创建消息队列，你就创建，也没有什么限制，为啥微软的消息队列就必须要受限？<br><br>恐怕是早期，微软假设，一个进程一个消息队列足以。后来支持多线程了，又缺省的认为，工作线程，你别关心UI的事情，不给你消息队列。等到最后来，觉得线程消息也不错啊，这样又允许非主线程拥有消息队列，并可以在上面完成UI。总之，感觉在微软看来，消息队列除了干UI的事情，没啥用。你要在进程之间发个自定义消息，那也不是他很期望的事情。<br><br>纯属推测。<img src ="http://www.cppblog.com/hongsion/aggbug/78884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hongsion/" target="_blank">rico</a> 2009-04-03 22:22 <a href="http://www.cppblog.com/hongsion/archive/2009/04/03/40260.html#78884#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>