Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Вниз

Окно, подобие понели задач   Найти похожие ветки 

 
Alexey_K ©   (2007-09-16 23:59) [0]

Пишу оболочку под Win, вот возник вопрос, каким образом создать окно (какие должны быть свойства), чтобы оно было подобно панели задач в винде, т.е. ограничивало разворачивание других окон, чтобы они (эти окна) не перекрывали его при "разворачивании".


 
Однокамушкин   (2007-09-17 09:59) [1]

http://www.rsdn.ru/article/winshell/appbars.xml


 
DVM ©   (2007-09-17 10:29) [2]


> Однокамушкин

Окно панели задач само не является AppBar-ом. Оно не подчиняется механизму управления AppBar-ами Explorera.


 
DVM ©   (2007-09-17 10:32) [3]


> Alexey_K ©

Т.к. ты пишешь свою оболочку, то о стандартном механизме управления Appbar-ами, что предложено в [1] можешь забыть. Необходимое поведение окна надо программировать самому, а чтобы работали аппбары, надо программировать и механизм управления ими.


> .е. ограничивало разворачивание других окон, чтобы они (эти
> окна) не перекрывали его при "разворачивании".


SystemParametersInfo() + SPI_SETWORKAREA


 
Alexey_K ©   (2007-09-17 10:33) [4]


> Окно панели задач само не является AppBar-ом.

Во во, а как реализовать именно такой бар как панель задач?


 
Alexey_K ©   (2007-09-17 10:35) [5]


> SystemParametersInfo() + SPI_SETWORKAREA

во пасиб, буду юзать...


 
DVM ©   (2007-09-17 10:35) [6]


> Во во, а как реализовать именно такой бар как панель задач?

Панель задач - понятие очень широкое. Что именно тебя интересует? Чтобы окно липло к краям экрана и его нельзя было оторвать, но можно было бы переместить к другому краю и имзменить размер? Или сам список задач интересует?


 
Alexey_K ©   (2007-09-17 10:45) [7]

1)
> Или сам список задач интересует

это уже реализовано
2)
> Чтобы окно липло к краям экрана и его нельзя было оторвать,
>  но можно было бы переместить к другому краю и имзменить
> размер

именно так, чтоб оно просто ограничевало рабочее пространство других приложений + было ВСЕГДА поверх всех окон, желательно даже поверх диспетчера задач...


 
DVM ©   (2007-09-17 10:49) [8]


> было ВСЕГДА поверх всех окон

Ну это несложно (SetWindowPos() + WM_WINDOWPOSCHANGING), только окно панели задач не всегда сверху всех окон.


> > Или сам список задач интересует
>
> это уже реализовано

эээ...не торопись утверждать, скорее всего есть масса глюков.


 
Lacmus ©   (2007-09-17 11:00) [9]

>DVM ©   (17.09.07 10:29) [2]
Интересно, что Вы имеете ввиду ? (на примере автоскрытия панели)


 
Alexey_K ©   (2007-09-17 11:01) [10]


> эээ...не торопись утверждать, скорее всего есть масса глюков.

ну тут просто (может и не сильно эффективно), если приложение запускается и у него есть окно (и оно не тул или диалог), то создается кнопочко на панели для переключения к этой задаче, ща думаю над папками.

вот никак я не догрню, как сэмулировать трей?


 
DVM ©   (2007-09-17 11:12) [11]


> Интересно, что Вы имеете ввиду ?

То, что написал, то и имею ввиду. Панель задач - не Аппбар, т.к. ее функциональность реализована напрямую в обход механизма управления аппбарами, который встроен в эксплорер. Грубо говоря сама панель задач и управляет аппбарами (сообщения от аппбаров приходят ее дочернему окну TrayNotifyWnd). Панель задач не вызывает функцию ShAppBarMessage().


> если приложение запускается и у него есть окно (и оно не
> тул или диалог), то создается кнопочко на панели для переключения
> к этой задаче

Это надо делать через установку ловушки WH_SHELL и функцию RegisterShellHook(). Так делает эксплорер.


> вот никак я не догрню, как сэмулировать трей?

Перехват сообщений WM_COPYDATA адресованных окну панели задач. Или заменить окно панели задач свои с тем же классом.


 
Alexey_K ©   (2007-09-17 11:19) [12]


> Это надо делать через установку ловушки WH_SHELL и функцию
> RegisterShellHook(). Так делает эксплорер.
>
>
> > вот никак я не догрню, как сэмулировать трей?
>
> Перехват сообщений WM_COPYDATA адресованных окну панели
> задач. Или заменить окно панели задач свои с тем же классом.
>


Во! За это пасиб, всё даже проще, чем я думал ;)


 
Lacmus ©   (2007-09-17 11:25) [13]

>DVM ©   (17.09.07 11:12) [11]

Думаю, Вы ошибаетесь, достаточно закрыть explorer.exe.


 
DVM ©   (2007-09-17 11:35) [14]


> Думаю, Вы ошибаетесь, достаточно закрыть explorer.exe.

В чем ошибаюсь? В том, что эксплорер управляет аппбпрами? Это действительно так. Убейте процесс эксплорера и убедитесь, что аппбары потеряют всю свою функциональность. Т.е. окна конечно остануться, но вот работать все будет неверно - они потеряют взаимную согласованность, т.к. некому больше будет корректировать их взаимное положение.

ShAppBarMessage шлет WM_COPY дата окну панели задач. В lParam сообщения вся информация об аппбаре. Панель задач корректирует данные в lParam и они частично возвращаются аппбару через ShAppBarMessage.


 
DVM ©   (2007-09-17 11:36) [15]


> ShAppBarMessage шлет WM_COPY

WM_COPYDATA имелось ввиду.


 
Lacmus ©   (2007-09-17 11:45) [16]

>DVM ©   (17.09.07 11:35) [14]

С координацией действительно начались проблемы, но с утверждением, что TaskBar не является AppBar-ом (т.е. не участвует в операциях с другими AppBar-ми) не соглашусь :-)


 
DVM ©   (2007-09-17 12:09) [17]


> но с утверждением, что TaskBar не является AppBar-ом (т.
> е. не участвует в операциях с другими AppBar-ми) не соглашусь
> :-)

Участвовать, не значит быть. :) Конечно, все расчеты положения остальных аппбаров строятся с учетом панели задач. Но она сама по себе - она для расчета своего положения не использует список координат остальных аппбпров (который у нее есть). Наоборот, она правит этот список в соответствии с собственным положением. Таким образом она всегда царь горы (края экрана) :)

Короче играет не по правилам.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.039 c
15-1190105915
Сергей М.
2007-09-18 12:58
2007.10.14
про Линух ..


11-1173541324
Dmitriy___
2007-03-10 18:42
2007.10.14
kolcryptolib: ошибка при установке


8-1167946339
joseph
2007-01-05 00:32
2007.10.14
DSPack


2-1190185844
artem779
2007-09-19 11:10
2007.10.14
пробег по строке


3-1180945677
Oleg_teacher
2007-06-04 12:27
2007.10.14
Как извлечь рисунок jpeg





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский