Re[3]: Приложение типа панели MSOffice
От: Soulless Россия  
Дата: 03.03.02 08:05
Оценка:
Здравствуйте beaver, Вы писали:

B>Здравствуйте Soulless, Вы писали:


S>>Если я тебя правильно понял, то ты хочешь сделать, чтобы окошко граница максимизированных окон примыкали к твоему окну но не перекрывали его? Я думаю можно было бы сделать через

S>>SetWindowsHookEx, т.е ловить WM_WINDOWPOSCHANGED для всех окон.Потом смотреть, если максимзируется то выполнять SetWindowPos для этого окна.

B>Я сделал это через SystemParametersInfo(SPI_(GET/SET)WORKAREA, ...), разместив предварительно сабж за этой будущей границей, там, где мне надо. Заголовка у него нет, так что передвинуть его никак, что и хотелось. Это срабатывает, как и в твоем описании, если приложение _максимизируется_ в данный момент, а надо, чтобы и максимизированные отъезжали. Есть мысль перебрать все запущенные приложения и перемаксимизировать максимизированные (вот это сказанул! ) с помощью SetWindowPos, но нет ли чего-нибудь такого в API, думаю, мелкомягкие-то в любом случае красивее должны были сделать!


В MSDN по это вопросу есть статья
Extend the Windows 95 Shell with Application Desktop Toolbars
Там в частности сказано

If an appbar is docked on the edge of the screen, moved from one edge of the screen to another, or removed from an edge of the screen, the system automatically resizes and repositions any maximized windows so that they always fill the workarea completely. In addition,when the upper-left corner of the workarea changes, the system shifts all the application windows on the screen so that they always maintain their relative distance from that corner.

Так что даже не знаю что сказать.
В статье есть пример, так что сравни со своим кодом.
если всё равно не будет работать,то надо перебрать все окна,получить их прямоугольники,
сделать SetWindowPos по старым координатам. Я думаю тогда до windows дойдёт чего ты от неё хочешь.

Успехов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.