绘制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);
}
目录
相关文章
|
小程序
小程序右上角的胶囊颜色怎么修改?
小程序右上角的胶囊颜色怎么修改?
211 0
|
5月前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
1002 0
|
5月前
|
图形学
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
|
6月前
|
前端开发 JavaScript
纯css动画 —— 展开、收起
纯css动画 —— 展开、收起
501 2
|
8月前
【sgCollapseBtn】自定义组件:底部折叠/展开按钮
【sgCollapseBtn】自定义组件:底部折叠/展开按钮
|
8月前
MFC隐藏对话框边框和可拖动
MFC隐藏对话框边框和可拖动
125 0
|
算法 API C#
Winform控件优化之圆角按钮【各种实现中的推荐做法】(下)
最终优化实现ButtonPro按钮(继承自Button),既提供Button原生功能,又提供扩展功能,除了圆角以外,还实现了圆形、圆角矩形的脚尖效果、边框大小和颜色、背景渐变颜色...
2246 0
Winform控件优化之圆角按钮【各种实现中的推荐做法】(下)
|
图形学
|
前端开发
css动画效果代码淡入淡出折叠展开点击悬浮
css动画效果代码淡入淡出折叠展开点击悬浮
|
Windows
C#-利用自定义控件绘制一个箭头控件
利用自定义控件绘制一个箭头控件
737 0