Posted on 2009-12-29 17:02
S.l.e!ep.¢% 閱讀(482)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
VC
以前繪制 +/- 時(shí)是使用圖片,看到有人用代碼實(shí)現(xiàn),轉(zhuǎn)貼之
繪制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);
}
