Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизВысота 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c