Making an owner-draw button transparent against its arbitrary background in WINCE

Posted by EndsOfInvention on Stack Overflow See other posts from Stack Overflow or by EndsOfInvention
Published on 2010-03-23T08:35:34Z Indexed on 2010/03/31 6:23 UTC
Read the original article Hit count: 299

Filed under:
|
|

Hi

I am trying to place an owner-draw button transparently onto a background. I have no trouble doing this when the background is a solid colour but if the background is an image I cannot seem to get the correct HDC (handle to device context) to Bitblt() the area that button covers.

The HDC that is passed as part of the DRAWITEMSTRUCT gives me a button-default-grey area. If I attempt to get the parent of the HWND and then the device context of that i.e

pdc = GetDC(GetParent(hWnd));

then the background that gets BitBlt'd is the background of the last painted window.

I hope this question makes sense.

this is the code I have:

  pdis = (LPDRAWITEMSTRUCT)(lParam);
  hdc = pdis->hDC;
  button = pdis->CtlID - IDC_BUTOFFSET;

  //pdc = GetDC((hWnd));
  pdc = GetDC(GetParent(hWnd));

  hbm = CreateCompatibleBitmap(pdc,  Buttons_[button]->bc.Size.cx, Buttons_[button]->bc.Size.cy);
  SelectObject(hdc, hbm);
  BitBlt(hdc, 0, 0, Buttons_[button]->bc.Size.cx, Buttons_[button]->bc.Size.cy, 
     pdc, Buttons_[button]->bc.Position.x, Buttons_[button]->bc.Position.y, SRCCOPY);

TIA Best regards Ends

© Stack Overflow or respective owner

Related posts about winapi

Related posts about visual-c++