У нас есть диалог X
, который может быть открыт различными потоками (также основной нитью) как модальный. Возможны несколько модальных X
диалогов, в то же время из разных потоков.MFC, Как закрыть модальные диалоги из главного окна?
Мы хотим, чтобы закрыть все X
(только X
) модальные диалоги, если главное окно обрабатывает сообщение SC_CLOSE
.
Вопрос в том, Из главного окна, как мы можем закрыть все модальные диалоги X
, когда он получает сообщение SC_CLOSE
? Только X
! Таким образом, PostQuitMessage
не помогает, потому что он закрывает все приложение, мы не хотим закрывать приложение, если открываются другие модальные диалоги, такие как Y, Z ...
.
Главное окно может обрабатывать сообщение SC_CLOSE
, когда у нас есть открытый модальный диалог X
из основного потока также из других тем. И у X
нет дочернего модального окна.
[Является ли законным иметь взаимосвязь между родителями-родителями/дочерними или владельцем/владельцем окна?) (Https://blogs.msdn.microsoft.com/oldnewthing/20130412-00/?p=4683) * " Да, это технически законно, а также технически законно манипулировать бензопилами ». * – IInspectable
@Инспективный Наш диалог похож на сообщение, поэтому у нас нет проблем с управлением. кажется, моя проблема выглядит нравится: [link] (http://stackoverflow.com/questions/17427103/windows-messagebox-ignoring-wm-close), но я не закрываю диалоговое окно 'X'. –
Вы не поняли проблему. Вы используете модальный диалог с окном владельца, которым владеет другой поток. Этот сценарий поддерживается только в том случае, если вы специально его использовали для обеспечения безопасности. Поскольку вы используете MFC, это невозможно, поскольку у вас нет доступа к коду диспетчеризации сообщений. Это запекается в реализации MFC. То, что вы делаете, небезопасно и не может быть безопасным. – IInspectable