Search code examples
c++cuser-interfacemfcdirect2d

ID2D1HwndRenderTarget always having black background instead of transparent


I am trying to create a simple transparent window where I can draw with Direct2D.

So far what I have done:

  1. Created window
  2. Set style to WS_EX_LAYERED
  3. Set alpha color key as #FFF
  4. Draw using Windows Graphics a white rectangle
  5. Now window is transparent with per-pixel alpha
  6. Then make a target out of the window and draw using Direct2D
    • Make ALPHA _PREMULIPLIED target
    • Clear with #FFF with 0.0f alpha
  7. Window is now black

I just don't know how to make window to transparent. If you can point out my mistake, I would be obliged


Solution

  • I don't think it's possible with directX. However GDI does work.

    Take a look at the source here to see how it's done: http://pastebin.com/NJf8wi2V

    In the source you can see that there is an option to attempt to use directx/opengl. However as you can see from running they do not work.