Код DrawItem для кнопки
| Код | CDC *dc = CDC::FromHandle(lpDIS->hDC);
CBrush *brush = dc->GetCurrentBrush(); LOGBRUSH log; brush->GetLogBrush(&log);
CBrush br(log.lbColor); CBrush br_shadow(GetSysColor(COLOR_BTNSHADOW)); CBrush br_btn_down(GetSysColor(COLOR_3DHIGHLIGHT)); CRect rect, rect_border; GetClientRect(&rect); rect_border = rect; CDC mem; mem. CreateCompatibleDC(dc); CBitmap bit_map; bit_map.CreateCompatibleBitmap(dc,rect.Width(),rect.Height()); mem.SelectObject(&bit_map); mem.FillSolidRect(&rect,RGB(212,208,200)); mem.FillSolidRect(&rect,log.lbColor); if(!m_MouseOver) { //br.CreateSysColorBrush(COLOR_BTNHILIGHT); mem.SelectStockObject(NULL_BRUSH); mem.SelectStockObject(NULL_PEN); mem.Rectangle(&rect); } else if(m_MouseOver && !m_MouseDown) { rect.bottom -= 1; rect.right -= 1;
mem.SelectObject(&br_shadow); mem.SelectStockObject(NULL_PEN); mem.Rectangle(&rect_border);
mem.SelectObject(&br); mem.Rectangle(&rect); mem.SelectStockObject(WHITE_PEN); mem.MoveTo(rect.left, rect.top); mem.LineTo(rect.right, rect.top); mem.MoveTo(rect.left, rect.top); mem.LineTo(rect.left, rect.bottom); } else if(m_MouseOver && m_MouseDown) { rect.top += 1; rect.left += 1;
mem.SelectObject(&br_shadow); mem.SelectStockObject(NULL_PEN); mem.Rectangle(&rect_border);
mem.SelectObject(&br_btn_down); mem.Rectangle(&rect); }
mem.SetBkMode(TRANSPARENT); CString temp; GetWindowText(temp); mem.DrawText(temp, &rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE);
dc->BitBlt(0,0,rect.Width(),rect.Height(),&mem,0,0,SRCCOPY);
|
Но почему-то кнопки на форме все равно мигают, когда я по ним мышкой бегаю. Почему? |