Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Высота Task Bar   Найти похожие ветки 

 
Dezmond   (2005-05-29 22:40) [0]

Привет всем!
Возникла необходимость знать высоту Task Bar"a.
Как это сделать? Возникла идея исользовать FindWindow применительно к окну с классом Shell_TrayWnd (в ХР это и есть таск бар), во всех ли версиях Windows класс таскбара называется так?

Спасибо!


 
Sergey Masloff   (2005-05-29 22:45) [1]

Не подойдет

Screen.Height - Screen.WorkAreaHeight

Вообще WorkAreaHeight это размер рабочей области за вычетом таскбара может это тебе нужно?


 
Dezmond   (2005-05-29 22:47) [2]

Именно это!
Спасибо!!!


 
Anatoly Podgoretsky ©   (2005-05-29 23:05) [3]

Sergey Masloff   (29.05.05 22:45) [1]
Не войдет если рассположен слева или справа


 
Sergey Masloff   (2005-05-29 23:12) [4]

Anatoly Podgoretsky ©   (29.05.05 23:05) [3]
Да я просто телепат понял что человеку нужно. Просто вся доступная поверхность а тут WorkAreaHeight в самый раз ;-)


 
Dezmond   (2005-05-29 23:33) [5]

-> Anatoly Podgoretsky ©   (29.05.05 23:05) [3]

Всё правильно, мне это и нужно было. Это для того, чтобы сделать ICQ-like окошко (как версии 5) для отображения новых сообщений. Оно должно появляться в нижнем-правом углу "над часиками". Если таскбар будет справа (слева) значит окошка будет "вылезать" прямо из-за границы экрана. Конечно надо ещё учитывать WorkAreaWidth на случай если тасбар будет справа.

Ещё раз спасибо. Вроде простая вещь, а застопорился )


 
Andy BitOff ©   (2005-05-30 01:56) [6]

Вот так правильнее будет, имхо =)


var
 ABData: TAppBarData;
 bAlwaysOnTop: Boolean; {Поверх окон}
 bAutoHide   : boolean; {Авт. убирать с экрана}
 ClRect      : TRect;   {Клиентские области}
 Rect        : TRect;
 Edge        : UInt;    {Местоположение TaskBar}
begin
 //определение положения TaskBar"a и его размер
 ABData.hWnd   := FindWindow("Shell_TrayWnd", nil);
 ABData.cbSize := sizeof(AppBarData);
 bAlwaysOnTop      := strToBool(IntToStr((SHAppBarMessage(ABM_GETSTATE, ABData) and  ABS_ALWAYSONTOP)));
 bAutoHide         := strToBool(IntToStr((SHAppBarMessage(ABM_GETSTATE, ABData) and  ABS_AUTOHIDE)));
 windows.GetClientRect(ABData.hWnd, ClRect);
 GetWindowRect(ABData.hwnd, rect);
 if (Rect.top >  0) Then Edge := ABE_BOTTOM else if (Rect.Bottom <  Screen.Height) Then Edge := ABE_TOP
   else if Rect.Right <  Screen.Width Then Edge := ABE_LEFT else Edge := ABE_RIGHT;
 //установка положения и изменение размеров формы на весь экран по высоте
 a:=0;
 if Edge=ABE_TOP then a:=clRect.Bottom;
 MainForm.Top:=a;
 a:=Screen.Height-clRect.Bottom-MainForm.Height;
 MainForm.Height:=MainForm.Height+a;
end;


 
KilkennyCat ©   (2005-05-30 02:19) [7]

то же самое, но с некоторыми дополнениями
http://www.codeproject.com/shell/trayposition.asp



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

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
14-1116914935
TUser
2005-05-24 10:08
2005.06.14
Пешеходов надо любить (с),


4-1113549382
KarpUha1
2005-04-15 11:16
2005.06.14
Wav в модем


3-1115832707
suharew
2005-05-11 21:31
2005.06.14
Как Вычесть время в SQL


1-1117006147
Ботвин Дмитрий
2005-05-25 11:29
2005.06.14
Добавление кнопок


3-1115751825
Vir
2005-05-10 23:03
2005.06.14
Счет фактура