![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Высота рабочего стола без панели задач...
Mihey © (2003-06-28 23:54:00)
Нужно узнать высоту области рабочего стола, где могут размещаться окна (т.е. высота экрана без высоту панели задач). Можно ли это дело реализовать без узнавания хэндла панели задач и дальнейшего определения параметров через посылку сообщений окнам?
Deus (2003-07-02 13:33:00) [1]
Можно ещё использовать GetSystemMetrics(SM_CX(Y)MAXIMIZED).
Кстати, панель задач может быть не только снизу. А так же рабочую область может уменьшить какаянть прога тип аськи...
sniknik (2003-06-29 17:29:00) [2]
DVM © (29.06.03 14:17)
ну не согласный я, насчет единственно правильного ответа. Screen.WorkAreaHeight со всеми его недостатками тоже покажет правильно. (в борланде наверняка тоже в курсе насчет "Панель офиса и пр.")
DVM (2003-06-29 14:17:00) [3]
> Mihey © ( Панель офиса и пр.)
> Mihey ©
Не забывайте, что панель это только одно из АппБаров, а могут быть и другие (Панель офиса и пр.). Поэтому единственный правильный ответ:
> Юрий Зотов © (29.06.03 02:00)
Юрий Зотов (2003-06-29 02:00:00) [4]
SystemParametersInfo c SPI_GETWORKAREA. Детали - в справке API.
Fenik (2003-06-29 01:54:00) [5]
Вот нашёл в ShellAPI:
function SHAppBarMessage(dwMessage: DWORD; var pData: TAppBarData): UINT;
PAppBarData = ^TAppBarData;
TAppBarData = record
cbSize: DWORD; {Размер записи}
hWnd: HWND; {Дескриптор панели}
uCallbackMessage: UINT; {Значение сообщения, которое будет послано панели с уведомляющими сообщениями}
uEdge: UINT;
rc: TRect; {Ограничивающий прямоугольник панели}
lParam: LPARAM; {Информация, связанная с сообщением}
end;
ели запросить при dwMessage = ABM_QUERYPOS (или $2), то функция должна вернуть позицию AppBar.
Т.е.
uses ShellAPI;
...
var F: TAppBarData;
...
SHAppBarMessage(ABM_QUERYPOS, F);
И смотрим F.rc
Я сам не пробовал. Может у тебя получится..
sniknik (2003-06-29 01:16:00) [6]
высота экрана без высоту панели задач
Screen.WorkAreaHeight
недостаток, инициализируется при старте программы (если поменять размер панели при запушеной программе, значение останется старым), ну во всяком случае когда пробовал у меня так и было. глубокого разбирательства как она работает не было, естественно.
Fenik (2003-06-29 01:01:00) [7]
Вряд ли. Придётся хендл узнавать.
Юзер ведь может расширить панель задач..