И я заметил интересное поведение окна диалога:
оказывается интерфейс зависает не сразу после перехода потоков на WaitForSingleObject, а после того как поступит сообщение главной оконной процедуре. Потому что, после перехода потоков на WaitForSingleObject курсор в рич эдите мигает и можно вводить в него слова(но после нажатия Enter они не исчезают, это значит сообщение от рич эдита не обрабатываются оконноц процедурой) и даже выделяются отдельные элементы в лист боксе, но стоит только кликнуть на самом окне диалога вне контролов как все зависает.
Но определенно сказать, что оконная процедура зависает нельзя, она еще принимает сообщения(только не от дочерних окон), даже после того, когда интерфейс не реагирует. Я это выяснил проведя опыт:
Выполнив все действия после которых оба потока перешли в ожидание на ф-ии WaitForSingleObject, я кликнул мышкой на окне диалога и оно зависло. После этого я установил брекпоинт на самое начало оконной процедуры. Затем я накрыл диалоговое окно другим окном(не имеет значения каким) и убрал это окно. По логике нашему приложению должно поступить сообщение о перерисовки диалогового окна. Так и случилось - брекпоинт сработал, значит сообщения от системы поступают и обрабатываются. Но диалоговое окно перерисовывается, только без контролов(простое серое окошко), вот на рисунке часть окна я закрыл другим окном:
http://forum.codenet.ru/attachment.php? ... 1203326491
Можно сделать вывод: обмен сообщениями между главным окном и его дочерними окнами не осуществляется, а обмен сообщениями между системой и главным окном работает нормально.