| 860 | // Overridables |
| 861 | |
| 862 | void DrawTreeItem(CDCHandle dc, HTREEITEM hItem, UINT iState) |
| 863 | { |
| 864 | IProperty* prop = reinterpret_cast<IProperty*>(TBase::GetItemData(hItem)); |
| 865 | ATLASSERT(prop); |
| 866 | |
| 867 | // Get paint rectangle |
| 868 | RECT rcItem = { 0 }; |
| 869 | _GetInplaceRect(hItem, &rcItem); |
| 870 | |
| 871 | // Setup drawinfo |
| 872 | PROPERTYDRAWINFO di = m_di; |
| 873 | di.hDC = dc; |
| 874 | di.rcItem = rcItem; |
| 875 | di.state = 0; |
| 876 | if( !prop->IsEnabled() ) di.state |= ODS_DISABLED; |
| 877 | if( hItem == m_iInplaceIndex ) di.state |= ODS_COMBOBOXEDIT; |
| 878 | |
| 879 | // A disabled TreeView control is painted grey in Windows2000 |
| 880 | if( (GetStyle() & WS_DISABLED) != 0 ) { |
| 881 | di.clrText = di.clrDisabled; |
| 882 | di.clrBack = ::GetSysColor(COLOR_BTNFACE); |
| 883 | } |
| 884 | |
| 885 | // Erase background |
| 886 | dc.FillSolidRect(&rcItem, di.clrBack); |
| 887 | |
| 888 | // Draw border |
| 889 | bool bDrawBorder = false; |
| 890 | switch( prop->GetKind() ) { |
| 891 | case PROPKIND_SIMPLE: |
| 892 | case PROPKIND_CHECK: |
| 893 | bDrawBorder = false; |
| 894 | break; |
| 895 | default: |
| 896 | bDrawBorder = ((iState & CDIS_SELECTED) != 0); |
| 897 | break; |
| 898 | } |
| 899 | if( bDrawBorder ) { |
| 900 | RECT rcBorder = rcItem; |
| 901 | ::OffsetRect(&rcBorder, -1, 0); |
| 902 | CBrush brBorder; |
| 903 | brBorder.CreateSolidBrush(di.clrBorder); |
| 904 | dc.FrameRect(&rcBorder, brBorder); |
| 905 | } |
| 906 | |
| 907 | // Paint value |
| 908 | HFONT hOldFont = dc.SelectFont(di.TextFont); |
| 909 | prop->DrawValue(di); |
| 910 | dc.SelectFont(hOldFont); |
| 911 | } |
| 912 | }; |
| 913 | |
| 914 | class CPropertyTreeCtrl : public CPropertyTreeImpl<CPropertyTreeCtrl> |
nothing calls this directly
no test coverage detected