Окно сообщений, отправляющее сообщения Windows? - PullRequest
3 голосов
/ 31 мая 2011

У меня относительно простой класс Window.Я создал окно, связал мой this и т. Д. И т. Д. Теперь, позже, я выдал исключение, чтобы указать на проблему.Когда я вызываю MessageBox, чтобы вызвать ошибку, программа вылетает, потому что пытается вызвать мой Window Proc.Теперь, я имею в виду, по общему признанию, я потерпел неудачу SRP здесь, и просто написание краткого самоподдерживающегося класса HWND решит эту проблему, поскольку окно не было очищено должным образом.Тем не менее, я действительно озадачен тем, почему он пытается обработать сообщения Window в моем MessageBox вызове - параметр владельца - nullptr.Любые предложения?

Редактировать: Если я правильно позвоню DestroyWindow, то теперь окно сообщения просто не отображается, хотя приложение не падает.Это работает только в том случае, если я вручную удаляю this из окна, чтобы при вызове процедуры он переадресовывал DefWindowProc, а затем DestroyWindow.Я имею в виду, я думал, что если вы позвоните MessageBox без владельца, то это будет просто работать, независимо от того, что вы сделали с другими окнами в системе.

1 Ответ

4 голосов
/ 31 мая 2011

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

Я понятия не имею, как решить вашу проблему, но это то, что происходит.

Кстати, передача нулевого владельцане очень хорошая идея, так как это приведет к тому, что окно вашего сообщения не будет свернуто, например, когда ваше основное приложение свернуто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...