牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

绘制CTreeCtrl的+/-展开按钮

绘制CTreeCtrl的+/-展开按钮的代码.
void DrawExpandButton( HDC hdc, LONG x, LONG y, BOOL bExpand, BOOL bFill )
{
    
const int PROPTREEITEM_EXPANDBOX        = 9;            // 按钮大小
    const int PROPTREEITEM_EXPANDBOXHALF    = (PROPTREEITEM_EXPANDBOX / 2);

    HPEN hPen;
    HPEN oPen;
    HBRUSH oBrush;

    hPen 
= CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW));
    oPen 
= (HPEN)SelectObject(hdc, hPen);
    oBrush 
= (HBRUSH)SelectObject(hdc, GetStockObject(bFill ? WHITE_BRUSH : NULL_BRUSH));

    Rectangle(hdc, x, y, x 
+ PROPTREEITEM_EXPANDBOX, y + PROPTREEITEM_EXPANDBOX);
    SelectObject(hdc, GetStockObject(BLACK_PEN));

    
if (!bExpand)
    
{
        MoveToEx(hdc, x 
+ PROPTREEITEM_EXPANDBOXHALF, y + 2, NULL);
        LineTo(hdc, x 
+ PROPTREEITEM_EXPANDBOXHALF, y + PROPTREEITEM_EXPANDBOX - 2);
    }


    MoveToEx(hdc, x 
+ 2, y + PROPTREEITEM_EXPANDBOXHALF, NULL);
    LineTo(hdc, x 
+ PROPTREEITEM_EXPANDBOX - 2, y + PROPTREEITEM_EXPANDBOXHALF);

    SelectObject(hdc, oPen);
    SelectObject(hdc, oBrush);
    DeleteObject(hPen);
}

posted on 2009-12-28 23:36 杨粼波 阅读(1472) 评论(4)  编辑 收藏 引用

评论

# re: 绘制CTreeCtrl的+/-展开按钮 2009-12-29 13:10 jjj123

这怎么绘制按钮啊?  回复  更多评论   

# re: 绘制CTreeCtrl的+/-展开按钮[未登录] 2009-12-29 20:00 杨粼波

话虽说是按钮,但是其实不过就是"+"和"-"号-_-!!  回复  更多评论   

# re: 绘制CTreeCtrl的+/-展开按钮 2009-12-30 09:13 jjj123

明白,为什么要自己绘制呢?
本文是通过什么机制来绘制的?  回复  更多评论   

# re: 绘制CTreeCtrl的+/-展开按钮[未登录] 2012-03-06 16:55 杨粼波

@jjj123
这个是我抄出来的代码,微软他自己就是这么绘制的。
这么简单的代码还读不懂咩?就是画线啊。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理