Сообщение Windows с кодом 0x3B - PullRequest
1 голос
/ 07 ноября 2011

При выходе из системы в Windows XP система отправляет сообщение с кодом 0x3B в главное окно приложения. Он был получен вместе с сообщением 0x11 WM_QUERYENDSESSION. Вот журнал входящих сообщений для WndProc:

Message processing: Id = 0x3B, wParam = -2147483637, lParam = 0, result = 0
Message processing: Id = 0x11, wParam = 0, lParam = -2147483648, result = 0
Form closing event handler. Reason:WindowsShutDown
Message processed: Id = 0x11, wParam = 0, lParam = -2147483648, result = 1
Message processed: Id = 0x3B, wParam = -2147483637, lParam = 0, result = 1
Message processing: Id = 0x3B, wParam = -2147483639, lParam = 0, result = 0
Message processing: Id = 0x16, wParam = 1, lParam = -2147483648, result = 0
Form closed event handler. Reason:WindowsShutDown
Message processing: Id = 0x46, wParam = 0, lParam = 1239312, result = 0
Message processed: Id = 0x46, wParam = 0, lParam = 1239312, result = 0
Message processing: Id = 0x47, wParam = 0, lParam = 1239312, result = 0
Message processed: Id = 0x47, wParam = 0, lParam = 1239312, result = 0
Message processing: Id = 0x86, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x7F, wParam = 2, lParam = 0, result = 0
Message processed: Id = 0x7F, wParam = 2, lParam = 0, result = 852077
Message processing: Id = 0x7F, wParam = 2, lParam = 0, result = 0
Message processed: Id = 0x7F, wParam = 2, lParam = 0, result = 852077
Message processed: Id = 0x86, wParam = 0, lParam = 0, result = 1
Message processing: Id = 0x6, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x6, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x1C, wParam = 0, lParam = 2620, result = 0
Message processed: Id = 0x1C, wParam = 0, lParam = 2620, result = 0
Message processing: Id = 0x8, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x8, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x2, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x2, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x82, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x82, wParam = 0, lParam = 0, result = 0

Мое приложение имеет ошибку в Windows XP при выходе из системы. Это не закрывается. И причина:

Message processed: Id = 0x3B, wParam = -2147483637, lParam = 0, result = <b>3</b>

вместо 1

Есть идеи, что означает это сообщение? И почему он обрабатывается неправильно?

1 Ответ

3 голосов
/ 07 ноября 2011

Мой Google-fu показывает, что это недокументированное сообщение - WM_CLIENTSHUTDOWN. Это может представлять интерес, но все, что он делает, это отправляет WM_QUERYENDSESSION / WM_ENDSESSION окну и его дочерним элементам. Возвращаемое значение 3 (MCSR_DONOTSHUTDOWN) указывает, что окно или один из его дочерних элементов накладывает вето на запрос.

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