Re: WIN API - Q&A - 2LZ
От: kero Россия  
Дата: 07.08.07 05:45
Оценка: 2 (1)
[2]
Когда выше я заявил, что
>3) SetWindowLong/GWL_HWNDPARENT, оказывается, на самом деле устанавливает отношения Owner/Owned
— я, каюсь, сознательно приврал (предполагалось, что мне возразят, и беседа оживится ).
На самом деле устанавливаются отношения, только лишь очень похожие на Owner/Owned.

Смотрим MSDN -> Window Features -> Owned Windows:

>An overlapped or pop-up window can be owned by another overlapped or pop-up window.

>Being owned places several constraints on a window.
>
>An owned window is always above its owner in the z-order.

Так же и после SetWindowLong.

>The system automatically destroys an owned window when its owner is destroyed.


Полностью зависит от окна, SetWindowLong не в состоянии этого обеспечить... но нередко в этом и нет необходимости.

>An owned window is hidden when its owner is minimized.


Так же и после SetWindowLong.

>After creating an owned window, an application cannot transfer ownership of the window to another window.


Но вот пример, как ParentOwner вроде бы меняет местами owner и owned:
запускаем clpbrd.exe,
из меню окна "Папка обмена" запускаем диалог "О программе",
запускаем ParentOwner (он, кстати, показывает, что окно "Папка обмена" = owner для окна "О программе"),
наводим курсор на заголовок окна "О программе" и шлепаем F8 (=> чекбокс "Lock" метится),
раздизабливаем кнопку "SetWindowLong(GWL_HWNDPARENT)" правым и жмем ее левым кликом,
очищаем чекбокс "Lock",
наводим курсор на заголовок окна "Папка обмена" и шлепаем F9,
жмем кнопку "En/Dis".
наводим курсор на заголовок окна "О программе" и шлепаем F8 (=> чекбокс "Lock" метится),
жмем кнопку "sWaP",
жмем кнопку "SetWindowLong(GWL_HWNDPARENT)".
И теперь окно "О программе" — вроде бы owner для окна "Папка обмена".
Конечно, WM_ENTERIDLE не перенаправился, зато если закрыть окно "О программе", то закроется и окно "Папка обмена", так что owner получился как настоящий.

[Продолжение следует...]
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.