Hey guys,
I'm working on implementing the SizeBar in HTML Help, but I'm running
into troubles with BitBlt. The expected behavior is as follows:
* User left-clicks on the SizeBar window. WM_LBUTTONDOWN
- Copy the contents of the SizeBar window to a bitmap.
* User "drags" the SizeBar left or right. WM_MOUSEMOVE
- Draw the bitmap containing the SizeBar contents with
XOR so the old position is erased and the new position is drawn.
* User releases the SizeBar. WM_LBUTTONUP
- Release bitmap resources.
- Resize internal windows.
The only thing not working is the color of the moving SizeBar. The
color in the bar is black with very few specks of white here and
there. Also, when the bar passes over text, the parts of the bar with
text under it turns white. Another problem is that the bar is drawn
23 pixels too high, so the bar starts at y=26 even though I specify
y=49 in BitBlt. Right now I'm using a couple global variables
temporarily until I can get the feature to work, but the following is
the function that copies the bits from the SizeBar window into the
bitmap:
static void SB_CopySizeBar(HHInfo *pHHInfo)
{
HDC hdc = GetDC(pHHInfo->hwndSizeBar);
RECT rc;
hdcMem = CreateCompatibleDC(hdc);
SB_GetSizeBarRect(pHHInfo, &rc);
hbm = CreateCompatibleBitmap(hdc, rc.right, rc.bottom);
SelectObject(hdcMem, hbm);
BitBlt(hdcMem, rc.left, rc.top, rc.right, rc.bottom, hdc, 0, 0, SRCCOPY);
}
When I paint the bar I use:
BitBlt(hdc, rc.left, rc.top, rc.right, rc.bottom, hdcMem, 0, 0, SRCINVERT);
I've attached a screen shot of what it should look like, and what it
actually looks like. If anyone has any ideas about getting this to
work, I would greatly appreciate it.
Thanks,
James Hawkins