当使用CreateEx
创建新窗口时,其代码是在其自己的线程中执行还是在其父线程(即执行其实例化代码的线程)中执行?感谢。
答案 0 :(得分:7)
窗口实际上并不运行任何代码,所有代码都是从消息循环中调用的,这是您自己代码的一部分。尝试使用多个线程与Windows UI进行交互时,您可能遇到很多问题,因此您应该始终在单个线程内响应消息。
答案 1 :(得分:3)
Windows具有线程关联性 - 请参阅Raymond Chen关于此问题的article。
答案 2 :(得分:2)
CreateWindowEx()不会创建新主题。如果你想要一个新线程,你必须打电话 _beginthreadex()(通常是首选)或CreateThread()。
如果您想知道,_beginthreadex()
比CreateThread()
更受欢迎,因为前者会初始化后者没有的部分CRT。
答案 3 :(得分:1)
不,创建窗口不要启动新线程
答案 4 :(得分:0)
跨线程GUI的东西通常以灾难结束。 Windows库通过抛出异常来积极地阻止它。
即使允许,CreateWindowEx默认也不能这样做,因为它会对你的代码做一些非常大的假设(锁,线程安全等);并且大多数Windows开发可能仍然基本上是单线程的。