树和列表
CTreeCtrl
Create( WS_Child | Visible | TVS_外观\消息\展开\选择\编辑 , CRect, Parent, IID ); —冲突— DDX_Control(IID, m);
ShowWindow( SW_Show\Normal\Minized );
外观:
Indent ItemHeigh(也就包括了文字宽) TextColor bkColor ImageList
元素操作:
InsertItem(-, 0, 1, Parent, Prev);
Delete(-); DeleteAll();
元素查找:
SelectItem FirstVisible RootItem(多个root)
|
|
| HTreeItem
查找: |
| Parent
| |
(Prev)<—— GetNextItem(-, TVGN) ——> (Next)
|
(Child) —>
属性
SetItem(-, TVIF);
SetItemState(-, TVIS \ 0, 掩码select、expand、bold、dropdrag ); Text(""); Image(-,0,1); Data(lParam); Rect(rect);
动作
Expand(-,展开\收缩\部分); Select(-,选中\拖放\滚动); Check(bool); EditLabel();
CListCtrl
Create( WS | LVS_Icon、Small、List、Report\对齐\排序\单选\编辑 , CRect, Parent, IID );
LONG = GetWindowLong( hWnd, GWL_STYLE);
style &= ~LVS_TYPEMASK; //清除原显示位 style |= LVS_REPORT;
SetWindowLong( hWnd, GWL_STYLE, style ); //设置style
SetExtendedStyle(GetExtendedStyle() | LVS_EX_选中整行、网格线、Checkbox);
外观:
ImageList TextColor TextBkColor bkColor ColumnWidth(列号, -) 宽高在列行里设
元素操作:
InsertColumn( 列id, "", LVCFMT_Left, Width ); DeleteColumn ( 列号 ); //列会依次向上移动
InsertItem( 行id, "", ImageList-id ); DeleteItem( 行号 ); //依次向上移动
DeleteAllItems();
查找:
GetItemCount(); 遍历:GetItemState(++i , LVIS_SELECTED );
GetHeaderCtrl()->GetItemCount();
while(pos = GetFirstSeletedItemPosition())
GetNextSeletedItem(pos);
lvItem
属性:
lvColumn.mask(LVCF) + 接收数据空间
Set \ GetColumn(0, &lvColumn );
GetItem(lvItem.LVIF);
SetItemText( 行号,列号, "" ); Data(行号, lParam); State(行号, LVIS\0, 掩码select、focus、dropdrag );
动作:
SetCheck(行号,bool); Scroll(CSize);
HitTest:
lvHitTestInfo.pt;flags = LVHT_Above;
SubItemHitTest( &lvHitTestInfo ){ GetItemRect(); }
lvHitTestInfo.iItem\iSubItem
HitTest( pt, &nFlag ); nFlag == LVHT_OnItem\Icon\StateIcon
大数据量更新时,避免闪烁
SetRedraw(FALSE);
//更新内容
SetRedraw(TRUE);
Invalidate();
UpdateWindow();