Информация об изменениях

Сообщение Re[3]: WS_CHILD и активность окна от 12.12.2022 10:10

Изменено 12.12.2022 10:14 Pavel Dvorkin

Re[3]: WS_CHILD и активность окна
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Эти 2 сообщения относятся к MDI.


ЕМ>Из чего это следует?


https://learn.microsoft.com/en-us/dotnet/desktop/winforms/advanced/how-to-determine-the-active-mdi-child?view=netframeworkdesktop-4.8
https://learn.microsoft.com/en-us/dotnet/desktop/winforms/advanced/how-to-send-data-to-the-active-mdi-child?view=netframeworkdesktop-4.8
https://learn.microsoft.com/ru-ru/dotnet/desktop/winforms/advanced/how-to-determine-the-active-mdi-child?view=netframeworkdesktop-4.8

https://stackoverflow.com/questions/46768865/how-to-change-the-active-mdi-child

http://win-api.narod.ru/a6594.htm

WM_CHILDACTIVATE Performs activation processing when MDI child windows are sized, moved, or displayed. This message must be passed.

PD>>MDI child могут иметь активность.


ЕМ>Если они могут иметь активность в том смысле, как она определена в описании оконных стилей, то возникает противоречие. Или они могут имитировать активность своими силами — так, что окно формально считается неактивным, но фактически отображается с подсвеченным заголовком и фокусом?


Это особый стиль для MDI child. Нет тут противоречия. В MDI приложении одно из child окон имеет синий заголовок и является активным в смысле MDI.

Женя, не надо спорить и искать ошибки и противоречия. Я это помню еще о времен Windows 3.0.
Re[3]: WS_CHILD и активность окна
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Эти 2 сообщения относятся к MDI.


ЕМ>Из чего это следует?


https://learn.microsoft.com/en-us/dotnet/desktop/winforms/advanced/how-to-determine-the-active-mdi-child?view=netframeworkdesktop-4.8
https://learn.microsoft.com/en-us/dotnet/desktop/winforms/advanced/how-to-send-data-to-the-active-mdi-child?view=netframeworkdesktop-4.8
https://learn.microsoft.com/ru-ru/dotnet/desktop/winforms/advanced/how-to-determine-the-active-mdi-child?view=netframeworkdesktop-4.8

https://stackoverflow.com/questions/46768865/how-to-change-the-active-mdi-child

http://win-api.narod.ru/a6594.htm

WM_CHILDACTIVATE Performs activation processing when MDI child windows are sized, moved, or displayed. This message must be passed.

PD>>MDI child могут иметь активность.


ЕМ>Если они могут иметь активность в том смысле, как она определена в описании оконных стилей, то возникает противоречие. Или они могут имитировать активность своими силами — так, что окно формально считается неактивным, но фактически отображается с подсвеченным заголовком и фокусом?


Это особый стиль для MDI child. Нет тут противоречия. В MDI приложении одно из child окон имеет синий заголовок и является активным в смысле MDI.

Женя, не надо спорить и искать ошибки и противоречия. Я это помню еще о времен Windows 3.0.

https://www.frolov-lib.ru/books/bsp/v17/ch1_4.htm

Функция окна Document Window очень похожа на функцию обычного дочернего окна, но все необработанные ей сообщения должны передаваться функции DefMDIChildProc (а не функции DefWindowProc). Функция DefMDIChildProc обрабатывает сообщения WM_CHILDACTIVATE, WM_GETMINMAXINFO, WM_MENUCHAR, WM_MOVE, WM_NEXTMENU, WM_SETFOCUS, WM_SIZE, WM_SYSCOMMAND. Перечисленные сообщения должны в обязательном порядке передаваться функции DefMDIChildProc, даже если функция окна Document Window обрабатывает их самостоятельно.