· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Вопрос про окно.

Посл.отвђт Сообщенiе


Дата: Авг 8, 2004 09:47:32

Здравствуйте!

Есть простой диалог. Хочется, чтобы диалог не появлялся в центре экрана, а отображался над часами в трее. (Так делает Нортон Антивирус, т.е. чтобы диалог находися над панелью задач в правом углу). Как это реализовать? (Сорсы привествуются. :0)
Я думаю, что есть какой-то стандартный стиль. (Или нужно устанавливать координаты размещения - как?)

Заранее спасибо!
1990


Дата: Авг 8, 2004 10:05:22

> Так делает Нортон Антивирус

Ну и заскринил бы, фиг его знает как он делает если у меня NAV никогда не было ;-)

> Или нужно устанавливать координаты размещения - как?

Ты не поверишь, ответ на вопрос "как?" уже имеется в статьях Iczelion'а и на форуме.
Смотреть в сторону GetWindowRect, GetDesktopWindow, MoveWindow, ...


Дата: Авг 8, 2004 10:15:41

Ну что тут сложного-то?

Берем ширину рабочего стола. Берем ширину нашего окна. Вычитаем из ширины десктопа ширину окна - координата Х.
Берем высоту рабочего стола. Берем высоту нашего окна. Берем толщину таскбара. Из высоты стола вычитаем высоту окна и толщину таскбара - координата Y.

Необходимые апышки:
GetSystemMetrics() - получение ширины/высоты десктопа и толщины таскбара.
GetWindowRect() - получение размеров окна.
MoveWindow() - перемещение окна.

ЗЫ: это алгоритм для случая, когда таскбар стандартно висит на 6 часах. Для привязки к таскбару - надо думать. Алгоритм будет другой.

ЗЗЫ: я не помню как GetWindowRect работает, так что если она не учитывает капшена (если есть), то надо через GetSystemMetrics еще ширину капшена получать и отнимать от Y. Ну да разберешься..


Дата: Авг 8, 2004 12:09:35

1990
Если положение таскбара нестандартное, то можно его найти через FindWindow, а потом GetWindowRect.

n0p
Там все в порядке. GetWindowRect возвращает non-client размеры, т.е. с кэпшеном и бордюрами.


Дата: Авг 9, 2004 16:20:40

Если я не ошибаюсь, то есть разница между размером экрана и размером рабочей области экрана (одна из них уже с учетом таскбара). Какой параметр не помню, но функция, кажется, GetSystemMetrics.


Дата: Авг 9, 2004 20:29:37


Дата: Авг 10, 2004 01:11:24

Sk. Inc.
Таксбар тут не причем. Есть понятие work area, которая может быть меньше, чем экран_минус_таскбар.

SystemParametersInfo + SPI_GETWORKAREA/SPI_SETWORKAREA


Дата: Авг 10, 2004 09:55:44

ALL
Спасибо! Решил проблему.


Дата: Авг 10, 2004 10:02:01

1990
Приоткроешь завесу тайны? Или опять закроешь тему, как Определение скорости процессора?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.045