如何在线程中优先考虑用户定义的消息?
Posted
技术标签:
【中文标题】如何在线程中优先考虑用户定义的消息?【英文标题】:how to prioritize user define messages in a thread? 【发布时间】:2009-08-28 11:27:17 【问题描述】:我只有一个线程(Windows 应用程序)接收窗口和用户定义的消息。现在,当用户单击鼠标并按住时,应用程序会锁定。 我该如何解决这个问题?我有一个线程的限制。
【问题讨论】:
【参考方案1】:当用户单击鼠标并按住时,应用程序锁定。
这不应该发生在标准的消息循环布局中。
如果你想做一些长时间的操作(比如等待鼠标向上消息),你不能阻塞接收到的消息。
所以我认为你的问题是WM_LBUTTONDOWN
中的逻辑。只需设置一个标志,不要等待WM_LBUTTONUP
消息。
【讨论】:
【参考方案2】:您可以将 PeekMessage() 与过滤器一起使用。 GetMessage() 也允许过滤。
请参阅 MSDN 文档:http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspx
【讨论】:
【参考方案3】:尝试查看是否从 wndproc 函数返回正确的值。 如果您没有返回正确的值,则应用程序可能会被锁定。 我认为,在您的情况下,WM_LBUTTONDOWN 事件可能不会返回正确的值.....
【讨论】:
以上是关于如何在线程中优先考虑用户定义的消息?的主要内容,如果未能解决你的问题,请参考以下文章