| | |
| | | |
| | | // 报表风格列举例 |
| | | SetExtendedStyle(GetExtendedStyle() |
| | | | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES); |
| | | |
| | | // 示例列(可在外部设置) |
| | | if (GetHeaderCtrl() == nullptr || GetHeaderCtrl()->GetItemCount() == 0) { |
| | | InsertColumn(0, _T("名称"), LVCFMT_LEFT, 260); |
| | | InsertColumn(1, _T("状态"), LVCFMT_LEFT, 120); |
| | | InsertColumn(2, _T("描述"), LVCFMT_LEFT, 260); |
| | | } |
| | | | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | void CExpandableListCtrl::PreSubclassWindow() |
| | | { |
| | | // 报表风格列举例 |
| | | SetExtendedStyle(GetExtendedStyle() |
| | | | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER); |
| | | |
| | | CListCtrl::PreSubclassWindow(); |
| | | } |
| | | |
| | | CExpandableListCtrl::Node* CExpandableListCtrl::InsertRoot(const std::vector<CString>& cols) |
| | |
| | | CString txt0 = n->cols.empty() ? _T("") : n->cols[0]; |
| | | pDC->DrawText(txt0, textRc, DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS); |
| | | |
| | | |
| | | // —— 画完三角与文本之后,补一条该行的底部横向网格线 —— |
| | | // 仅当开启了 LVS_EX_GRIDLINES 才绘制 |
| | | if (GetExtendedStyle() & LVS_EX_GRIDLINES) |
| | | { |
| | | // 用整行 bounds,保证横线贯穿所有列的可见宽度 |
| | | CRect rcRow; |
| | | GetSubItemRect(row, 0, LVIR_BOUNDS, rcRow); |
| | | |
| | | // 底边 y 坐标(与系统网格线对齐) |
| | | const int y = rcRow.bottom - 1; |
| | | |
| | | // 颜色与系统风格接近;若觉得偏浅,可换 COLOR_3DSHADOW |
| | | CPen pen(PS_SOLID, 1, GetSysColor(COLOR_3DLIGHT)); |
| | | CPen* oldPen = pDC->SelectObject(&pen); |
| | | |
| | | // 横线从行左到行右(当前可见区域) |
| | | pDC->MoveTo(rcRow.left, y); |
| | | pDC->LineTo(rcRow.right, y); |
| | | |
| | | pDC->SelectObject(oldPen); |
| | | } |
| | | |
| | | *pResult = CDRF_SKIPDEFAULT; |
| | | return; |
| | | } |
| | |
| | | |
| | | *pResult = CDRF_DODEFAULT; |
| | | } |
| | | |
| | | |