if (nState & ODS_FOCUS)
{
//pen.CreatePen (PS_SOLID, 10, RGB(255,0,0));
pen.CreatePen (PS_SOLID, 1, RGB(209,236,243));
m_hBmp = SHLoadDIBitmap(m_strImagePath);
if (m_hBmp)
{
brush.CreatePatternBrush(CBitmap::FromHandle(m_hBmp));
}
else
{
brush.CreateSolidBrush(RGB(255,0,0));
}
//  CRect rectEx = m_btRect;
// 
//  rectEx.top -= 10;
//  rectEx.bottom += 10;
//  rectEx.left -= 10;
//  rectEx.right += 10;

old_pen   = pDC->SelectObject(&pen);
old_brush = pDC->SelectObject(&brush);
pDC->Rectangle(&rtControl); this->MoveWindow(&rtControl);
//this->Invalidate();
}
else
{
pen.CreatePen (PS_SOLID, 1, RGB(209,236,243));
m_hBmp = SHLoadDIBitmap(m_strImagePathNormal);
if (m_hBmp)
{
brush.CreatePatternBrush(CBitmap::FromHandle(m_hBmp));
}
else
{
brush.CreateSolidBrush(RGB(0,0,255));

}
old_pen   = pDC->SelectObject(&pen);
old_brush = pDC->SelectObject(&brush);
pDC->Rectangle(&rtControl);
this->MoveWindow(&rtControl);
//this->Invalidate();
}我重写DrawItem这个函数以后,在这个函数里想在BUTTON获取焦点时把按钮变大。
然后在失去焦点的时候,把按钮变小。
我已经改变了矩形的大小了,但是还是不行。

解决方案 »

  1.   

    不用这么复杂吧....你说的变大是指按钮的窗口变大还是线变粗...窗口变大改改size就可以了吧...线变粗只要重写NCPaint之前把DC的画笔宽度变宽就可以了吧...
      

  2.   

    我意思是说。在这个按钮获取焦点的时候。
    就是在原来的基础上吧这个按钮变大一点点。
    失去焦点的时候还原。。
    然而我用上面的代码,在获取焦点的时候吧矩形的变大。
    然后用MoveWindow、Rectangle这2个函数
    但是窗口根本就没有按照我预期的那样变大啊。。
    我不知道说明白没有。
      

  3.   

    我不是在代码里面吧矩形改变了么?
    // rectEx.top -= 10;
    // rectEx.bottom += 10;
    // rectEx.left -= 10;
    // rectEx.right += 10;这段我暂时是注释的。但是没注释的情况下。
    矩形还是原来那样。根本就没有变动。。
    也就是说按钮没有变大。