Windows HUD/Overlay

I want to create a HUD/Overlay program to display things over the desktop and other programs (The info will come from external Linux servers, I already know how to set it up all for TCP communication). I am fairly new to programming with Win32 interfaces and was wondering how to get started.

Things the programs needs to do:
*Use a full screen "window" that is transparent (Shows whats under it).
*Use OpenGL (I have a good amount of experience with GLFW on both Windows and Linux).
*Have the user inputs (mouse, keyboard, ect.) pass through the overlay to the windows under it.

How would I go about doing this? Thanks in advance!
This finds the desktop window:

https://msdn.microsoft.com/en-us/library/ms633504.aspx

Then you can create a window without background:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679(v=vs.85).aspx

*Have the user inputs (mouse, keyboard, ect.) pass through the overlay to the windows under it.
This would be as if no window exists. Why not open a window just where you want to see something.

What you can try is passing the messages to the next window (or the desktop):

https://msdn.microsoft.com/en-us/library/windows/desktop/ms633509(v=vs.85).aspx
What you are trying to do is a Bad Thing. Don't do that.

Create a separate window to display information.


Seriously. Users will hate you for interfering with the normal behavior of their desktop.


If undaunted, what you want to do is really about the same as writing a window manager, because you must intercept and process ALL windows events, which is a very tricky and very massive undertaking with all kinds of corner cases, not to mention properly dealing with other software that does weird and tricky things on Windows. You aren't just biting off a bullet, you are biting off an entire bullet warehouse.

If you are willing to scale back a little, create something of a dock-style application -- something that bites off one corner or edge of the display (like left or top side!) and, when the user specifically pulls for the information with mouse hover or click or something, can expand further out into the display and retreat when the user is done with it. This provides a good compromise: Some section of the display is always visible for notifications, and user chooses whether or not to see more or less.

If you just stick to a single window approach, user can stick that in a corner or position it as he wishes, just like every other application.

Hope this helps.
Registered users can post here. Sign in or register to post.