Практическое использование в стороне, как (если это вообще возможно) вы могли бы создать эффект "снега" на вашем настольном ПК под управлением Windows? Предпочтительно ничего, кроме сырых C/С++ и WinAPI.
Требования к снегу:
- Появляется над всем остальным (обратите внимание: окна всегда на верхнем уровне могут быть на вершине снега, это нормально. Я понимаю, что для любого приложения не может быть флаг "абсолютный сверху" )
- Снежинки маленькие, возможно простые точки или кластеры из нескольких белых пикселей;
- Не беспокоится о работе с компьютером (щелчок по снежинке отправляет клик в основное окно);
- Играет приятно, когда пользователи перетаскивают окна;
- Поддержка нескольких мониторов.
Бонусные точки для любой из следующих функций:
- Снег накапливается на нижнем краю окна или панели задач (если он находится в нижней части экрана);
- Снег накапливается также на окнах верхнего уровня. Или, возможно, некоторый снег накапливается, некоторые продолжают опускаться, накапливаясь в каждом окне с заголовком;
- Снег, накопленный в окнах, "стряхивается" при перетаскивании окон;
- Снег, накопленный на панели задач, знает о расширенной кнопке "Пуск" в Vista/7.
- Снежинки имеют тени/контуры, поэтому они видны на белом фоне;
- Снежинки имеют сложные формы, похожие на снежинки (они все равно должны быть крошечными).
- Нажатие на снежинку отправляет клик в основное окно, но снежинка испаряется с небольшой прохладной анимацией;
Большинство из этих эффектов достаточно просты, за исключением той части, где снег щелкает и хорошо играет с перетаскиванием окон. В мои ранние годы я сделал реализацию, которая опирается на HDC, который вы получаете от GetDesktopWindow()
, который был щелчком мыши, но имел проблемы с перетаскиванием окон пользователями (снежинки, сделанные на них, были "перетащены" ).
В решении могут использоваться функции Vista/7 Aero, но, конечно же, универсальное решение является предпочтительным. Любые идеи?