Re: Vista Aero
"John" <John@discussions.microsoft.com> wrote in message
news:0256CCFD-D3CF-4EEF-81F7-8E3E6EB28D3A@microsoft.com...
Hi, David
below is a snippet of my code.about drawing scrollbar.
note: it can be displayed normally unless Aero in vista is enabled.
thanks once again and hope response.
//// a snippet of my code
void CMyScrollBar::OnPaint()
{
CPaintDC dc(this);
// draw scrollbar when receive the on_paint message
DrawScrollBarDC(&dc);
}
//// draw scrollbar
void CMyScrollBar::DrawScrollBarDC(CDC *pDC)
{
CRect clientRect;
CDC memDC;
CBitmap tempBmp,*oldBmp;
GetClientRect(&clientRect);
if(clientRect.Width()<=0) return;
memDC.CreateCompatibleDC(pDC);
tempBmp.CreateCompatibleBitmap(pDC,rectClient.Width(),rectClient.Height());
oldBmp = memDC.SelectObject(&tempBmp);
memDC.SetStretchBltMode(COLORONCOLOR);
memDC.FillSolidRect(rectClient,RGB(255,0,0));
// draw the scrollbar image
if(m_bReDraw) DrawScrollBar(&memDC);
// i had copied the memDC to clipboard from here
// and then paste to word document, the image is right
// so why bitBlt can't blit the image normally?
pDC->BitBlt(0,0,
rectClient.Width(),rectClient.Height(),&memDC,0,0,SRCCOPY);
// dw is 0 anyway
DWORD dw = GetLastError();
memDC.SelectObject(oldBmp);
tempBmp.DeleteObject();
memDC.DeleteDC();
}
Hi John, this code looks good. I'm not sure if SetStretchBltMode() should
be called on pDC (instead of the memDC), same for StretchBltMode(), but if
it worked before, it should be OK. I also don't know about m_bRedraw; I
assume it is FALSE and the memDC gets filled with the red solid color.
What happens if you temporarily remove the memDC and just blt the red solid
color to pDC. Does it work then? If the problem is the mem DC, there may
be something we are overlooking... perhaps use the CMemDC class by Keith
Rule?
Sorry nothing obvious jumps out. Let us know how it goes with you.
Thanks,
David