Re[2]: От чего может виснуть CreateWindowEx?
От: rus blood Россия  
Дата: 15.08.05 06:44
Оценка:
Здравствуйте, Sergei I. Gorelkin, Вы писали:

SIG>Здравствуйте, Corvin, Вы писали:


SIG><skipped>


SIG>CreateWindowEx не только создает окно, но и посылает ему сообщения WM_NCCREATE, WM_CREATE (возможно, и не только их). Поэтому, если что-то напортачено в оконной процедуре, то может и повиснуть. В самой FLTK, конечно, вряд ли будут столь грубые глюки, но наверняка она вызывает какой-то пользовательский код для инициализации окна.


Добавлю.
CreateWindowEx производит еще некий обмен сообщением между создаваемым дочерним и его родительским окном. Операция может подвиснуть, если эти окна в разных потоках. Например, родительское окно живет в основном потоке. Далее запускается рабочий поток, который создает дочернее окно (пример — длительная операция в рабочем потоке с отображением прогресс-бара на главном фрейме). Если основной поток просто ждет завершения рабочего потока (без цикла сообщений), то операция создания дочернего окна зависнет — CreateWindowEx не сможет отправить сообщение в родительское окно. Нужно обеспечить (хотя бы кратковременный) цикл сообщений в основном потоке.
Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.