I\'m creating a non-intrusive popup window to notify the user when processing a time-consuming operation. At the moment I\'m setting its transparency by calling SetLa
In order to do "proper" alpha in a layered window you need to supply the window manager with a PARGB bitmap by a call to UpdateLayeredWindow.
The cleanest way to achieve this that I know of is the following:
Bitmap object with the PixelFormat32bppPARGB pixel format.Graphics object to draw in this Bitmap object.Graphics object created in step 2.GetHBITMAP method on the Bitmap object to get a Windows HBITMAP.Bitmap object.CreateCompatibleDC and select the HBITMAP from step 5 into it.HBITMAP created in step 5.This method should allow you to control the alpha channel of everything that is drawn: transparent for the background, opaque for the text and button.
Also, since you are going to be outputting text, I recommend that you call SystemParametersInfo to get the default antialiasing setting (SPI_GETFONTSMOOTHING), and then the SetTextRenderingHint on the Graphics object to set the antialiasing type to the same type that is configured by the user, for a nicer look.