Закрытие диалога MFC - PullRequest
       18

Закрытие диалога MFC

0 голосов
/ 30 января 2012

Добрый день!У меня есть диалог MFC с прогрессом.Диалог автоматически закрывается после достижения 100% с помощью PostMessageW (WM_CLOSE).Проблема в том, что когда во время выполнения я перемещаю диалог по экрану, диалог не закрывается и сообщение WM_CLOSE игнорируется.Какие-либо предложения?Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Работа за индикатором выполнения выполняется в отдельном потоке?Похоже, что в противном случае при перетаскивании диалогового окна индикатор выполнения зависнет до тех пор, пока вы не отпустите диалоговое окно, а не возобновилось бы.Это означает, что вам, возможно, придется взглянуть на связь между потоками, то, как сообщение отправляется в диалоговое окно HWND.

Возможно, это связано с тем, что диалоговое окно находится в состоянии остановки (без активности) во время его перетаскивания.что кажется нормальным поведением окон.В этом случае вы можете использовать сигналы / CEvent, чтобы закрыть диалоговое окно.

0 голосов
/ 30 января 2012

Для модального диалога вам на самом деле не нужно использовать сообщение WM_CLOSE.

Обычно вы бы использовали события кнопки OK или Отмена, чтобы закрыть его, вызывая метод EndDialog из функциональногокод или просто вернуть, когда ваша обработка завершена (при условии, что процесс запускается, как только диалоговое окно инициализируется).Вы можете установить возвращаемое значение одновременно, например, EndDialog(2);.

. В любом случае диалоговое окно закроется, как только вернется текущий обработчик сообщений, так что вполне может быть задержка закрытия, но это не должно бытьмного.

...