Как создать метель на рабочем столе Windows?

Помимо практического использования, как (если это вообще возможно) можно создать "снегопад" влияет на ваш настольный ПК под управлением Windows? Желательно только с необработанным C / C ++ и WinAPI.

Требования к снегу следующие:

  • Появляется поверх всего остального изображения (Примечание: окна, которые всегда отображаются поверх всех окон, могут все еще выходить на снег, это нормально. Я понимают, что для любого приложения не может быть флага «абсолютное наверху»)
  • Снежинки - это маленькие, возможно, простые точки или кластеры из нескольких белых пикселей;
  • Не мешает работе с компьютером (при нажатии на снежинку отправляется щелкните мышью, чтобы перейти к нижележащему окну);
  • Хорошо работает с пользователями, перетаскивающими окна;
  • Возможность работы с несколькими мониторами.

Бонусные баллы за любую из следующих функций:

  • Снег накапливается на нижнем краю окна или панель задач (если она находится внизу экрана);
  • Снег накапливается также в окнах верхнего уровня. Или, возможно, часть снега накапливается, часть продолжает опускаться, накапливаясь в каждом окне со строкой заголовка;
  • Снег, накопившийся на окнах, «стряхивается», когда окна перетаскиваются;
  • Снег, накопленный на панели задач, является известно о расширенной кнопке «Пуск» в Vista / 7.
  • Снежинки имеют тени / очертания, поэтому они видны на белом фоне;
  • Снежинки имеют сложные формы, похожие на снежинок (они все еще должны быть крошечными).
  • Щелчок по снежинке отправляет щелчок в нижележащее окно, но снежинка испаряется с небольшой крутой анимацией;

Большинство этих эффектов достаточно просты, за исключением той части, где снег проходит по щелчку и хорошо сочетается с перетаскиванием окон. В молодые годы я Мы сделали реализацию, основанную на HDC, полученном из GetDesktopWindow () , который был сквозным, но имел проблемы с перетаскиванием окон пользователями (визуализированные на них снежинки «тянулись»).

Решение может использовать возможности Vista / 7 Aero, но, конечно, предпочтительнее универсальное решение. Есть идеи?

11
задан random 9 April 2011 в 14:33
поделиться