2010-11-19 38 views
1

當使用CreateEx並其代碼在它自己的線程或其父(即,在其中執行其實例化代碼的線程)的執行創建一個新窗口?謝謝。創建視窗和線程 - C++

+0

您可以使用調試器 – Andrew 2010-11-19 21:50:28

+0

看看這可以幫助你:http://support.microsoft.com/kb/90975/en-us – 2010-11-19 21:53:43

回答

1

否,創建窗口不啓動新的線程

+0

感謝。接受爲第一個回答。 – 2010-11-19 22:26:06

+0

沒問題,只是問) – 2010-11-19 22:27:01

7

窗口沒有真正運行在自己的任何代碼,所有的代碼從消息循環這是你自己的代碼部分調用。嘗試與多個線程交互的Windows UI可能會遇到大問題,因此您應該始終在單個線程中響應這些消息。

+0

+1「你應該總是在一個單一的線程內迴應消息。」 – 2010-11-19 22:07:30

+0

謝謝。 +1的細節。 – 2010-11-19 22:26:32

2

CreateWindowEx()不會創建一個新的線程。如果您想要新線程,則必須撥打 _beginthreadex()(通常優選)或CreateThread()

如果你想知道,_beginthreadex()優於CreateThread(),因爲前者初始化後者沒有的CRT部分。

3

Windows系統有線程關聯 - 看到在這個問題上Raymond Chen的article

0

跨線程GUI的東西通常在災難中結束。窗口庫通過拋出異常來積極阻止它。

即使是允許的,CreateWindowEx無法在默認情況下,因爲這將使得你的代碼(鎖,線程安全等),一些非常大的假設做到這一點;大多數Windows開發大概仍然是單線程的。