如何在线程中优先考虑用户定义的消息?

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 事件可能不会返回正确的值.....

【讨论】:

以上是关于如何在线程中优先考虑用户定义的消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何选择线程的优先级?

如何在 MultiOutput LSTM Tensorflow 中优先考虑某些输出?

Cocos2dx中线程优先级

POSIX消息队列 - mq_send线程唤醒命令

在 R 中,如何确定用户定义的中缀运算符的运算符优先级?

如何对不同队列上的消息进行优先级排序?