#directx #cpp
Существует программа DreamScenes, которая позволяет устанавливать видео обои на рабочий стол (обычное видео в формате dream/wmv/mpg). Также в VLC media player есть функция показа видео в режиме обоев (исходники данной программы доступны, но разобраться в них не получилось: Исходники). Как выглядит код, реализующий такую фичу? Пока я смогла реализовать такое "чудо" таким образом (примерный код, рабочий): #include#include #include using namespace std; void main() { WIN32_FIND_DATA File; HANDLE F; for(int i=0; i < 10; i++) { F=FindFirstFile("C:\\leto\\*.jpg", &File); if (F!=INVALID_HANDLE_VALUE) { do { ofstream bat("C:\\logo.bat", ios_base::out); bat << "REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /d \"C:\\leto\\" << File.cFileName <<"\" /f" << endl << "rundll32.exe user32.dll,UpdatePerUserSystemParameters" << endl; bat.close(); system("C:\\logo.vbs"); Sleep(200); } while (FindNextFile(F,&File)!=0); FindClose(F); } } system("pause"); } Описание: В папке находятся картинки (кадры анимации). Находим первую картинку, в батнике прописываем код, который меняет обои рабочего стола на мою картинку, запускаем vbs-скрипт, который позволяет выполнять батник в фоновом режиме, затем делаем паузу между выполнением следующей команды в программе С++ (0.2 сек). Таким образом наблюдается анимация на рабочем столе (но на первом проходе она виснет, почти не выполняется, потом работает, в этом и проблема). Как реализовать нормально, без зависа и кучи картинок, как в упомянутых в начале темы программах?
Ответы
Ответ 1
Отрисовку можно сделать посредством DirectDraw, вот тут есть пример. Но, решение несовместимо с Aero, придется выключать.
Комментариев нет:
Отправить комментарий