![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
Хочу поместить диалоговое окно в нижнем правом углу, над трейем, как это делает QIP (всплывающие сообщения). Но мое окно перекрывает трей. Прошу помощи.
|
|||
|
||||
Maks1509 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.8.2007 Где: г. Тольятти Репутация: 3 Всего: 5 |
? |
|||
|
||||
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
Спасибо! А как раположить второе окно, выше предыдущего?
|
|||
|
||||
Maks1509 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.8.2007 Где: г. Тольятти Репутация: 3 Всего: 5 |
Зависит от твоего способа реализации. Как вариант, завести массив дескрипторов всплывающих окон. Если надо отобразить окно, проходимся по всему массиву, считываем координаты каждого окна оттуда и к примеру увеличиваем нашу переменную с высотой всех наших всплывающих окон. Не знаю, можно посмотреть исходные коды ICQ мессенджеров как там реализовано все это. Сложно сказать на этот счет.
|
|||
|
||||
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
Я понял, хорошо. С этим буду думать.
По ходу вопрос: а как сделать "всплывающее" с низу окно? Понимаю, что в таймере придется реализовывать SetWindowPos. Есть у кого-то пример? |
|||
|
||||
Maks1509 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.8.2007 Где: г. Тольятти Репутация: 3 Всего: 5 |
Высоту всплывающего окна и системой панели вычисляешь, получится какое-то значение. Ну в цикле можно через while какую-нибудь переменную уменьшать на 1, которая первоначально была равна высоте экрана, до значения = высота экрана - высота всплывающего окна - высота системной панели. По этому результирующему значению выводишь свое всплывающее окно.
![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
||||
|
||||
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
Итак, с позицией окна разобрались. Теперь бы как-нибудь прояснить ситуацию в таймере с функцией SetWindowPos. Вообще не понимаю, как это сделать?
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Как человек, у которого трей уже лет 10 находится в левом нижнем углу, могу сказать "ну-ну..."
Также не учтён вариант с несколькими мониторами, когда имеет место быть точка отсчёта <> 0. В данном случае ширина или высота экрана не есть координата края. Также не учитывается автохайд. Если панель спряталась, то какой смысл вычитать её высоту? Нужно не экран мерять, а десктоп. Координаты правого нижнего угла которого найти несложно:
|
|||
|
||||
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
2Snowy: Спасибо. Об этом и не подумал. Учту.
Ребята, пожалуйста, помогите решить тему с выезжанием окна вверх. Сам не справлюсь:
Это сообщение отредактировал(а) navodri - 12.7.2010, 12:47 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
А в чём проблема-то?
Навскидку вижу, что окно у тебя не выезжает потому, что нет вызова цикла обработки сообщений. Но проще воспользоваться AnimateWindow, чем городить велосипед. А, учитывая, что таких окошек у тебя может быть несколько, то выезжать вручную будет к тому же и нелепо. Юзай AnimateWindow. Так и проще и корректней. |
|||
|
||||
navodri |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 26.10.2007 Репутация: нет Всего: -1 |
Вроде, всё сделал правильно, но не работает. Помогите!
Это сообщение отредактировал(а) navodri - 12.7.2010, 17:51 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |