Ну как бы то нибыло вот что получилось, щас сделаю версию уже с "ручной" проверкой, надо ли перерисовывать стрелки.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() ![]() |
![]() |
klem4 |
![]()
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Решил сделать часы на паскале, никогда не делал, ну не знаю просто захотелось) вот только мне кажется в одном месте я прощитался, решив использовать задержку, наверняка ведь на многих машинах Delay(1000) не будет = 1с.
Ну как бы то нибыло вот что получилось, щас сделаю версию уже с "ручной" проверкой, надо ли перерисовывать стрелки. ![]() Прикрепленные файлы ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Андрей, а слабО переписать это под Windows, и использовать SetTimer/KillTimer ?
![]() |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Вот небольшой набросок тех же самых часов, написанных на почти чистом WinAPI (почти - потому, что все-же используются модули SysUtils + DateUtils)...
![]() Можно запускать несколько копий приложения, при изменении размера окна часы также меняют размер... Надо только добавить несколько функций: 1) запрет дальнейшего уменьшения по достижении какого-то размера, чтобы часы не были слишком маленькими; 2) вывод цифр можно поправить, чтобы во-первых, не выводилось 0 .. 11, а выводилось 1 .. 12, да и сами координаты выводимого текста (а, возможно, и шрифт) мне кажется, надо доработать... 3) ну, в принципе, добавлять можно еще много, только тогда это уже будут не совсем простые часы ![]() Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение... ![]() P.S. Не стал исправлять программу, но заметил, что в ней не освобождается контекст устройства после обработки WM_TIMER... Естественно, поскольку это событие происходит ежесекундно, а контекст создается, и не освобождается - программа начинает "поедать" память. Перед выходом из блока If draw Then ... в обработчике WM_TIMER добавить ReleaseDC(Window, DC); Эскизы прикрепленных изображений ![]() |
Bokul |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение... У меня есть. ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата Я за API, только почему без ООП? Потому, что идеология работы с WinAPI подразумевает процедурный стиль, ООП - это надо свою VCL делать ![]() Насчет фич - есть несколько идей. Например, добавить возможность сокрытия часов в трей, и по наведению мыши показывать такие небольшие часики (может быть, даже цифровые, возможно - показывать еще и текущую дату), что-то типа того, что делает WMP когда минимизирован, показывает Preview, а по Restore часов сделать их, скажем, полупрозрачными, лежащими OnTop, где-нибудь в углу экрана, но не мешающими работать с другими программами (прозрачными не только визуально, но и для событий... Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши)... Идей много, реализовать бы хоть часть ![]() Ждем автора темы, что он скажет, может быть у него другие идеи насчет дальнейшего развития программы... |
Archon |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Очень интересно! Надеюсь тема не заглохнет.
PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением? -------------------- Close the World...txeN eht nepO
|
Bokul |
![]()
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением? Ну да, там все просто. Цитата Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши "Пропускает" значит не обрабатывает? Вообщем идеи у volvo что надо, осталось только сделать.. Цитата и по наведению мыши показывать такие небольшие часики, что-то типа того, что делает WMP когда минимизирован А можешь сказать куда подкопаться для этого надо? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата "Пропускает" значит не обрабатывает? ![]() ![]() Цитата А можешь сказать куда подкопаться для этого надо? Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно...А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? ![]() |
Bokul |
![]()
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно... А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? Когда сработает обработчик этого события?. Ну это понятно. Интересует как и куда ты планируешь выводить часы по наведению на иконку. Цитата А есть способ сделать так, чтобы сообщение "прошло ниже", как будто нашего окна вообще нет на экране... ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата(Bokul @ 6.02.2007 1:21) Интересует как и куда ты планируешь выводить часы по наведению на иконку. Над таскбаром, например (прямо там, где находится Hint от приложения, свернутого в трей)... Да какая разница, куда - изменить положение можно одной строкой ![]() ![]() Цитата(Bokul @ 6.02.2007 1:21) ![]() |
Bokul |
![]()
Сообщение
#11
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата А подумать? Ну чтобы так просто, я не вижу, не знаю способа. А так, может можно поставить фильтр на распределения сообщений по программным потокам с системной очереди - если оно адресованно нам, то пересылаем его к нижнему окну (которое еще надо определить). -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
![]() ![]() Все проще гораздо... Hint - используются регионы... ![]() |
Bokul |
![]()
Сообщение
#13
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Hint - используются регионы ... English version please.. ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
|
Altair |
![]()
Сообщение
#15
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Хочу такие часы на рабочий стол себе. Что бы прямо на десктоп рисовалось...
klem4, доделывай давай, раз начал ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 25.03.2023 5:27 |