Форум: "WinAPI";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизИменение рабочей области как это делает панель office Найти похожие ветки
← →
Newbe (2004-06-02 08:05) [0]Народ у меня трабла, как сделать чтобы моя программа помещалась справа на экране, но при этом чтобы вся рабочая область экрана была смещена как это делает панель office и панель задач с пуском.
← →
GuAV © (2004-06-02 09:36) [1]RTFM
Application Desktop Toolbars
SHAppBarMessage
← →
Newbe (2004-06-09 13:20) [2]Во вроде бы сделал, только не до конца :( Вот что я сделал (перед этим перерыл гору инфы):
//Определяем размеры старой рабочей области
OldRect:=Rect(Screen.WorkAreaLeft, Screen.WorkAreaTop, Screen.WorkAreaWidth, Screen.WorkAreaHeight);
//Определяем размеры новой рабочей области (мне нужно было сместить ее слева на 153 пиксела)
NewRect:=Rect(Screen.WorkAreaLeft, Screen.WorkAreaTop, Screen.WorkAreaWidth-153, Screen.WorkAreaHeight);
//Затем применяем новую область и обновляем экран, чтобы значки свалили в сторону :)
SystemParametersInfo(SPI_SETWORKAREA, 0, @NewRect, SPIF_SENDCHANGE);
При завершении работы программы выполняется следующий код и все приходит в норму (как было)
SystemParametersInfo(SPI_SETWORKAREA, 0, @OldRect, SPIF_SENDCHANGE);
Но я столкнулся с такой проблемой, после того как область урезана, появляется моя программа и прклеивается к правой области экрана, но уже к урезанной, а как присобачить ее к старым координатам самой правой области.
З.Ы. Хотя бы подскажите в каком направлении копать.
← →
Романов Р.В. © (2004-06-09 13:38) [3]Читай GuAV © (02.06.04 09:36) [1]
← →
Newbe (2004-06-10 06:58) [4]2Романов Р.В. эээ... я как бы немного понял, что надо копать в этом направлении, вот только не могли бы сказать поточнее. Я знаю что это делается через какой-то параметр функции SHAppBarMessage вот только через какой и как его использовать. Потому что я почитал про SHAppBarMessage но там только на С++ и сразу написано как создать целую AppBar панель, а мне нужно всего лишь перенести свою форму за область нового экрана (в старую область).
← →
Романов Р.В. © (2004-06-10 07:15) [5]
> а мне нужно всего лишь перенести свою форму за область нового
> экрана (в старую область).
Нет никакого нового экрана и старой области нет. И перенести туда ничего нельзя. Ищи другие примеры по Application Desktop Toolbars, разбирайся с кодом на C.
Удачи.
← →
DVM © (2004-06-10 09:06) [6]
> Newbe (10.06.04 06:58) [4]
Полно готовых компонентов на www.torry.net в разделе Appbars & TaskBars.
← →
Сергей Ю. (2004-06-10 10:35) [7]Дык ты сначала свою форму покажи там где тебе надо, а потом уж изменяй координаты рабочего стола.
← →
Newbe (2004-06-11 06:45) [8]2Сергей Ю.
Пробовал не получается :( Интересно а как это вообще должно было сработать :)
← →
DVM © (2004-06-11 09:12) [9]Мда...
Советовали же почитать про AppBars.
Короче говоря дело обстоит так:
Функция ShAppBarMessage() позволяет зарегистрировать в системе новую AppBar. Она же (функция) позволяет информировать систему о том, что положение или состояние панели изменилось. Система же хранит список этих аппбаров и просматривая его вычисляет размеры рабочей области, вычитая из размеров экрана размеры аппбаров. Функция ShAppBarMessage сама ничего не двигает и размеры никакие не меняет. Это лишь руководство к действию, что и как делать. Перемещать окно должен сам программист.
Самому изменять размеры рабочей области не стоит, т.к. при изменении положения или состояния любого из аппаров размеры рабочей области будут пересчитаны и восстановлены.
Всем эти делом заведует панель задач. Именно она (эксплорер) управляет списком панелей.
Также она перемещает окна внутрь рабочей области, попутно меняя их размер, если необходимо. Это делается не со всеми окнами, а только с теми которые имеют определенные стили (не помню точно все).
Вот.
В инете валяется полно компонентов, которые к любому окну добавляют функциональность аппбаров. Также валяется статья Рихтера о том, как он разбирался с этими аппбпрами в далеком 95 году.
← →
Newbe (2004-06-11 09:29) [10]DVM
Все конечно красиво и сказачно :) но:
1) статья Рихтера на С (блин ну ломает меня переделывать ее на Delphi).
2) те компоненты (бесплатные) которые я видел мне не понравились, слишком громоздкие и замороченные. Хочется сделать что-то свое :) более маленькое и простенькое, зато понятненькое :).
3) где бы найти наиболее полное и побдобное описание функции SHAppBarMessage (конечно желательно на русском языке)
З.Ы. Когда (Если) сделаю как я хочу (не используя сторонние компоненты) напишу статью "Как самому создать простенький AppBar"
← →
DVM © (2004-06-11 09:36) [11]
> 1) статья Рихтера на С (блин ну ломает меня переделывать
> ее на Delphi).
Да что там переделывать, пару строк.
Вот она, кстати:
http://www.rsdn.ru/article/winshell/appbars.xml
> 3) где бы найти наиболее полное и побдобное описание функции
> SHAppBarMessage (конечно желательно на русском языке)
В той статье :)
← →
DVM © (2004-06-11 09:42) [12]
> 2) те компоненты (бесплатные) которые я видел мне не понравились,
> слишком громоздкие и замороченные. Хочется сделать что-то
> свое :) более маленькое и простенькое, зато понятненькое
> :).
Не все громоздкие. Но если ты станешь программировать всю функциональность аппбара (прилипание к краям экрана, автоскрытие с анимацией, закрепление, плавающий режим, сохранение положения в реестре, ступенчатое и плавное изменение размеров и т д. там еще с десяток функций), то твоя аппбар станет не менее громоздкой. Кстати, в них можно и поглядеть как и что делается.
← →
Newbe (2004-06-11 11:16) [13]DVM
Вот мы и подошли к главному :) мне не нужна вся мощь аппбара мне нужно только одна его функция - уменьшение рабочей области и помещение своей формы к самому краю, чтобы ей никто не мешал и она никому не мешала.
← →
DVM © (2004-06-11 19:38) [14]
> Вот мы и подошли к главному :) мне не нужна вся мощь аппбара
> мне нужно только одна его функция - уменьшение рабочей области
> и помещение своей формы к самому краю, чтобы ей никто не
> мешал и она никому не мешала.
И вот ответ: зарегить свое окно функцией ShAppBarMessage и указать край экрана, к которому собираешься липнуть. Потом получаешь прямоугольник в который можно вписать окно и SetWindowPos().
← →
Newbe (2004-06-15 07:03) [15]
> И вот ответ: зарегить свое окно функцией ShAppBarMessage
> и указать край экрана, к которому собираешься липнуть. Потом
> получаешь прямоугольник в который можно вписать окно и SetWindowPos().
вот я тоже так подумал, что наверное так можно сделать, вот только еще пока не разобрался как :(. Ладно как нибудь надо будет выкроить время и разобраться как можно зарегить созданную форму как AppBar.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c