代码之家  ›  专栏  ›  技术社区  ›  Jim Fell

创建窗口和线程-C++

  •  1
  • Jim Fell  · 技术社区  · 14 年前

    创建新窗口时使用 CreateEx 它的代码是在它自己的线程中执行的还是在它的父线程(即执行它的实例化代码的线程)中执行的?谢谢。

    5 回复  |  直到 14 年前
        1
  •  1
  •   Sanja Melnichuk    14 年前

    不,创建窗口不要启动新线程

        2
  •  7
  •   Mark Ransom    14 年前

    窗口本身并不运行任何代码,所有代码都是从消息循环调用的,消息循环是您自己代码的一部分。在尝试使用多个线程与Windows UI交互时,可能会遇到巨大的问题,因此应该始终在单个线程中响应消息。

        3
  •  3
  •   David Heffernan    14 年前

    窗口具有线程关联“参见Raymond Chen's article 关于这件事。

        4
  •  2
  •   John Dibling    14 年前

    CreateWindowEx() 不创建新线程。如果你想要一个新的线程,你必须调用 任何一个 _beginthreadex() (通常首选)或 CreateThread() .

    如果你想知道, _beginthreadex() 优先于 CreateThread() 因为前者初始化CRT的某些部分,而后者则不初始化。

        5
  •  0
  •   winwaed    14 年前

    跨线程GUI通常以灾难结束。Windows库通过抛出异常来主动阻止它。

    即使它被允许,CreateWindowEx在默认情况下也不能这样做,因为它会对您的代码(锁、线程安全等)做一些非常大的假设;而且大多数Windows开发基本上仍然是单线程的。