我在线程A上有一个窗口,该窗口在某个时候(由于在其wndproc上收到消息)触发了对线程B的操作,然后等待该操作完成(使用某种同步机制)。然后,线程B调用MoveWindow(),以在线程A的窗口内移动一个子窗口(例如,标准文本框)。此时,由于某种原因,程序进入了死锁状态。如果从线程A调用MoveWindow(),则一切正常。有什么想法吗?

最佳答案

您可以将SetWindowPos与标志SWP_ASYNCWINDOWPOS一起使用,而不要使用MoveWindow。

原因可能是ThreadA等待ThreadB处理某些事件,但同时ThreadB等待ThreadA(拥有窗口的线程)返回MoveWindow的结果。

关于c++ - MoveWindow死锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/770503/

10-14 17:45