This is my first tip. I am writing a simple block of code to make a dialog transparent. I have seen many articles which make a dialog completely transparent with its child control too.
This tip uses a simple trick to make a transparent dialog without making its child controls transparent.
Using the Code
The idea behind making a transparent dialog is:
We can set the opacity and transparency color key of a layered window.
LWA_COLORKEY to replace a color with transparency, in order to achieve a transparent background.
The code that makes dialog is:
- Set the background color of the dialog which is not used in the application. I selected a color (e.g., RGB(1,11,21)) that is not present anywhere except in the dialog background.
- Set that color transparent using
SetLayeredWindowAttributes with the
LONG ExtendedStyle = GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE );
SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,ExtendedStyle | WS_EX_LAYERED );
Paste the above code in the
OnInitDialog() function of your dialog class. Use Visual Studio 2010 and derive your dialog class from the