1

i want to make an animated wallpaper for windows. So far i have only expreience with Mac OS X programming and i'm new to windows. So i decided to work with QT because it seems that there is more help out there.

Until now i have created the app in a borderless window in qt. It work quiet fine.

But is there a way in QT to change the level of the window so that its appear above the windows wallpaper but behind the icons?

EDIT:

Ok if found a simple solution.

After some testing with the hints form kusg1 I figured out when there is a transparent window mouse events going still to the desktop.

I actualy want have this website has wallpaper: Ticketack. - So i created a frameless window which stays on bottom and has a transparent background and displays the text. Beside this i can change the windows wallpaper directly to get the background of the clock.

So clock text is not behind the icons but i think this will be ok.

Tobias Heß
  • 268
  • 1
  • 9
  • Basically you're recreating [Windows DreamScene](https://en.wikipedia.org/wiki/Windows_DreamScene) ? The DLL used is Vista can be registered in Windows 7 to enable the same functionality. – Nasreddine Nov 27 '11 at 18:03
  • Not exactly, it want to use a webpage as background. – Tobias Heß Nov 27 '11 at 18:42

2 Answers2

1

Just some ideas: Use the windows flag as Qt::Window | Qt::FramelessWindowHint + Windows Stay at bottom hint, and set the content of the widget with your animated content (the suitable candidate is to use QGraphicsView).

The widget needs two main tasks:

  1. Upon launching, it grabs the desktop background as pixmap and do overlay with the animated content (this needs to have the desktop to be wallpaper-less for simple scenario).

  2. The widget needs to capture mouse and focus event and channel back to actual window command if the user wants to click the icon on the desktop.

Update:

Some pointers for the implementation:

  • For managing desktop icon, there is a good article here! (also found from SO).
  • Qt example and demos has an example on the taking desktop snapshot, the snippet is: QPixmap::grabWindow(QApplication::desktop()->winId());
kuskus
  • 176
  • 7
0

Answer to your question: no, there isn't.

However, you can try something like this using Windows API: How to draw directly on the Windows desktop, C#?

Community
  • 1
  • 1