我在自定义绘制按钮里DrawItem里面
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
PaintBK(lpRect,uState); //这个是绘制这个按钮背景的
//绘制外形(包括3D外观的)
//绘制按钮上的ICON和文字
}
void PaintBK(LPRECT lpRect,uState)//lpRect为按钮客户区 UINT uState(为状态标志)
{
//根据uState选出一种color,(bgColor);
CClientDC dc(this);
dc.FillRect(*lpRect,&CBrush(bgColor));
}
这个普通情况下工作正常,但要是拖动的时候,比如拖动消失到了 屏幕边界里面的时候,引起重绘,
绘制出来的按钮就不正常了:
就是要么按钮显示一个flat(平坦的状态)全是,表明全部被bgColor填充(按钮的图标,文字等什么的全部被背景色覆盖了.
要么是按钮部分一部分显示正常,一部分被bgColor填充
这是什么原因呢?
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
PaintBK(lpRect,uState); //这个是绘制这个按钮背景的
//绘制外形(包括3D外观的)
//绘制按钮上的ICON和文字
}
void PaintBK(LPRECT lpRect,uState)//lpRect为按钮客户区 UINT uState(为状态标志)
{
//根据uState选出一种color,(bgColor);
CClientDC dc(this);
dc.FillRect(*lpRect,&CBrush(bgColor));
}
这个普通情况下工作正常,但要是拖动的时候,比如拖动消失到了 屏幕边界里面的时候,引起重绘,
绘制出来的按钮就不正常了:
就是要么按钮显示一个flat(平坦的状态)全是,表明全部被bgColor填充(按钮的图标,文字等什么的全部被背景色覆盖了.
要么是按钮部分一部分显示正常,一部分被bgColor填充
这是什么原因呢?
http://blog.csdn.net/xianglitian/archive/2007/08/06/1728242.aspx
CRect itemRect = lpDrawItemStruct->rcItem;
pDC->SetBkMode(TRANSPARENT);
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect itemRect = lpDrawItemStruct->rcItem;
pDC->SetBkMode(TRANSPARENT);