42 m_evtSet.addEvent(EVENTID(EventTCSelChanging));
43 m_evtSet.addEvent(EVENTID(EventTCSelChanged));
44 m_evtSet.addEvent(EVENTID(EventTCCheckState));
45 m_evtSet.addEvent(EVENTID(EventTCExpand));
46 m_evtSet.addEvent(EVENTID(EventTCDbClick));
57 return InsertItem(lpszItem, -1, -1, 0, hParent, hInsertAfter);
60HSTREEITEM
STreeCtrl::InsertItem(LPCTSTR lpszItem,
int nImage,
int nSelectedImage, HSTREEITEM hParent, HSTREEITEM hInsertAfter)
62 return InsertItem(lpszItem, nImage, nSelectedImage, 0, hParent, hInsertAfter);
65HSTREEITEM
STreeCtrl::InsertItem(LPCTSTR lpszItem,
int nImage,
int nSelectedImage, LPARAM lParam, HSTREEITEM hParent, HSTREEITEM hInsertAfter)
67 LPTVITEM pItemObj =
new TVITEM();
69 pItemObj->strText = lpszItem;
70 pItemObj->nImage = nImage;
71 pItemObj->nSelectedImage = nSelectedImage;
72 pItemObj->lParam = lParam;
74 return InsertItem(pItemObj, hParent, hInsertAfter);
85 BOOL bVisible = pItem->bVisible;
87 int nCheckBoxValue = pItem->nCheckBoxValue;
108 LPTVITEM pParent =
GetItem(hParent);
109 pParent->bHasChildren = FALSE;
110 pParent->bCollapsed = FALSE;
182 strText->Copy(&pItem->strText);
196 pItem->strText = lpszItem;
212 *nImage = pItem->nImage;
214 *nSelectedImage = pItem->nSelectedImage;
228 pItem->nImage = nImage;
229 pItem->nSelectedImage = nSelectedImage;
242 return pItem->lParam;
254 pItem->lParam = lParam;
275 return pItem->nCheckBoxValue;
286 if (pItem->nCheckBoxValue != nCheck)
288 pItem->nCheckBoxValue = nCheck;
309 if (nCode == TVE_COLLAPSE && !pItem->bCollapsed)
311 pItem->bCollapsed = TRUE;
315 if (nCode == TVE_EXPAND && pItem->bCollapsed)
317 pItem->bCollapsed = FALSE;
321 if (nCode == TVE_TOGGLE)
323 pItem->bCollapsed = !pItem->bCollapsed;
341 LPTVITEM pItem =
GetItem(hItem);
342 if (!pItem->bVisible)
347 LPTVITEM pParent =
GetItem(hParent);
348 if (pParent->bCollapsed)
349 Expand(hParent, TVE_EXPAND);
355 if (yOffset +
m_nItemHei > m_siVer.nPos + m_rcClient.Height())
357 SetScrollPos(TRUE, yOffset +
m_nItemHei - m_rcClient.Height(), TRUE);
359 else if (yOffset < m_siVer.nPos)
361 SetScrollPos(TRUE, yOffset, TRUE);
398 HSTREEITEM hItem =
InsertItem(xmlItem, hParent);
414 if (!_wcsicmp(
attr.name(), L
"text"))
415 pItem->strText = S_CW2T(
attr.value());
416 else if (!_wcsicmp(
attr.name(), L
"img"))
417 pItem->nImage =
attr.as_int(0);
418 else if (!_wcsicmp(
attr.name(), L
"selImg"))
419 pItem->nSelectedImage =
attr.as_int(0);
420 else if (!_wcsicmp(
attr.name(), L
"data"))
421 pItem->lParam =
attr.as_uint(0);
434 BOOL bCheckState = FALSE;
438 LPTVITEM pParentItem =
GetItem(hParent);
439 if (pParentItem->bCollapsed || !pParentItem->bVisible)
440 pItemObj->bVisible = FALSE;
442 if (pParentItem->nCheckBoxValue != pItemObj->nCheckBoxValue)
445 if (!
GetChildItem(hParent) && !pParentItem->bHasChildren)
447 pParentItem->bHasChildren = TRUE;
455 pItemObj->hItem = hRet;
459 if (pItemObj->bVisible)
473 LPTVITEM pItemObj =
new TVITEM();
476 return InsertItem(pItemObj, hParent, hInsertAfter);
483 if (hItem2 == hItem1)
495 LPTVITEM pItem =
GetItem(hChild);
496 pItem->bVisible = bVisible;
498 if (!pItem->bCollapsed)
510 pItem->nCheckBoxValue = nCheckValue;
526 if (pItem->nCheckBoxValue != nCheckValue)
543 int nOldState = pItem->nCheckBoxValue;
545 bool bHasUnChecked =
false;
546 bool bHasChecked =
false;
547 bool bHasPartChecked =
false;
554 bHasUnChecked =
true;
558 bHasPartChecked =
true;
560 if (bHasPartChecked || (bHasUnChecked && bHasChecked))
565 if (bHasPartChecked || (bHasUnChecked && bHasChecked))
567 else if (bHasChecked && !bHasUnChecked)
570 if (pItem->nCheckBoxValue != nOldState)
599 nOffset += szToggle.cx;
607 nOffset += sizeSkin.cx;
615 nOffset += sizeSkin.cx;
624 GETRENDERFACTORY->CreateRenderTarget(&pRT, 0, 0);
627 int nTestDrawMode =
GetTextAlign() & ~(DT_CENTER | DT_RIGHT | DT_VCENTER | DT_BOTTOM);
630 DrawText(pRT, pItem->strText, pItem->strText.GetLength(), rcTest, nTestDrawMode | DT_CALCRECT);
637 int nItemWidth = 0, nChildrenWidth = 0;
641 LPTVITEM pItem =
GetItem(hItem);
651 if (nChildrenWidth > nItemWidth)
652 nItemWidth = nChildrenWidth;
671 LPTVITEM pItem =
GetItem(hItem);
674 if (hItem == hItemObj)
678 if (pItem->bCollapsed)
694 if (pItemObj->bVisible == FALSE)
699 int iFirstVisible = m_siVer.nPos /
m_nItemHei;
709 if (iVisible > iFirstVisible + nPageItems)
711 if (iVisible >= iFirstVisible && pItem == pItemObj)
714 rcRet.OffsetRect(rcClient.left - m_siHoz.nPos, rcClient.top - m_siVer.nPos + iVisible *
m_nItemHei);
718 if (pItem->bCollapsed)
738 pt2.y -= rcClient.top - m_siVer.nPos;
752 if (iVisible == iItem)
755 rcItem.OffsetRect(rcClient.left - m_siHoz.nPos, rcClient.top - m_siVer.nPos + iVisible *
m_nItemHei);
756 pt -= rcItem.TopLeft();
760 if (pItem->bCollapsed)
781 int iFirstVisible = m_siVer.nPos /
m_nItemHei;
784 if (iItem != -1 && iItem >= iFirstVisible && iItem < iFirstVisible + nPageItems)
789 rcItem.OffsetRect(rcClient.left - m_siHoz.nPos, rcClient.top +
m_nItemHei * iItem - m_siVer.nPos);
796 BOOL bTextColorChanged = FALSE;
798 COLORREF crOldText = RGBA(0xFF, 0xFF, 0xFF, 0xFF);
805 if (rcItemBg.right > rc.Width() - pItem->nLevel *
m_nIndent)
806 rcItemBg.right = rc.Width() - pItem->nLevel *
m_nIndent;
817 bTextColorChanged = TRUE;
825 bTextColorChanged = TRUE;
833 if (!pItem->bCollapsed)
850 if (pItem->nSelectedImage != -1 && hItem ==
m_hSelItem)
856 UINT align = DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS;
858 pRT->
DrawText(pItem->strText, -1, rcItemBg, align);
860 if (bTextColorChanged)
871 SList<HSTREEITEM> lstParent;
875 lstParent.AddHead(hParent);
894 SPOSITION pos = lstParent.GetHeadPosition();
897 HSTREEITEM hParent = lstParent.GetNext(pos);
912 if (pItem->bCollapsed)
914 if (!hasParent && !hasPervSibling)
916 else if (hasNextSibling)
923 if (!hasParent && !hasPervSibling)
925 else if (hasNextSibling)
928 iLine = minus_bottom;
935 if (!hasParent && !hasPervSibling)
963 pItem->dwToggleState |= dwStateAdd;
964 pItem->dwToggleState &= ~dwStateRemove;
969 rcUpdate.OffsetRect(rcItem.left, rcItem.top);
978 pItem->dwCheckBoxState |= dwStateAdd;
979 pItem->dwCheckBoxState &= ~dwStateRemove;
984 rcUpdate.OffsetRect(rcItem.left, rcItem.top);
1016 Expand(pItem->hItem, TVE_TOGGLE);
1042 EventTCCheckState evt(
this);
1044 evt.uCheckState = pItem->dwCheckBoxState;
1062 EventTCDbClick dbClick(
this);
1063 dbClick.bCancel = FALSE;
1064 dbClick.hItem = hItem;
1066 if (!dbClick.bCancel)
1068 Expand(hItem, TVE_TOGGLE);
1132 __baseCls::OnDestroy();
1145 int iFirstVisible = m_siVer.nPos /
m_nItemHei;
1153 if (pItem->bVisible)
1155 if (iVisible > iFirstVisible + nPageItems)
1157 if (iVisible >= iFirstVisible)
1160 rcItem.OffsetRect(rcClient.left - m_siHoz.nPos, rcClient.top - m_siVer.nPos + iVisible *
m_nItemHei);
1164 if (pItem->bCollapsed)
1180 __baseCls::OnLButtonDown(nFlags, pt);
1198 __baseCls::OnRButtonDown(nFlags, pt2);
1207 __baseCls::OnRButtonDown(nFlags, pt2);
1212 __baseCls::OnLButtonUp(nFlags, pt);
1235 HSTREEITEM hHitTest =
HitTest(pt);
1262 EventTCSelChanging evt1(
this);
1263 evt1.bCancel = FALSE;
1265 evt1.hNewSel = hItem;
1274 EventTCSelChanged evt(
this);
1276 evt.hNewSel = hItem;
1297 return pItemObj->nContentWidth + pItemObj->nLevel *
m_nIndent;
1326 m_pListener->OnDeleteItem(
this, pItemData->hItem, pItemData->lParam);
1335 m_pListener->OnInsertItem(
this, pItemData->hItem);
1349 CSize size = rcClient.Size();
1352 m_wBarVisible = SSB_NULL;
1354 if (size.cy < szView.cy || (size.cy < szView.cy +
GetSbWidth() && size.cx < szView.cx))
1357 m_wBarVisible |= SSB_VERT;
1359 m_siVer.nMax = szView.cy - 1;
1360 m_siVer.nPage = size.cy;
1361 if (m_siVer.nPos + (
int)m_siVer.nPage > m_siVer.nMax)
1363 m_siVer.nPos = m_siVer.nMax - m_siVer.nPage;
1368 m_wBarVisible |= SSB_HORZ;
1372 m_siHoz.nMax = szView.cx - 1;
1374 if (m_siHoz.nPos + (
int)m_siHoz.nPage > m_siHoz.nMax)
1376 m_siHoz.nPos = m_siHoz.nMax - m_siHoz.nPage;
1382 m_siHoz.nPage = size.cx;
1384 m_siHoz.nMax = m_siHoz.nPage - 1;
1391 m_siVer.nPage = size.cy;
1393 m_siVer.nMax = size.cy - 1;
1396 if (size.cx < szView.cx)
1399 m_wBarVisible |= SSB_HORZ;
1401 m_siHoz.nMax = szView.cx - 1;
1402 m_siHoz.nPage = size.cx;
1403 if (m_siHoz.nPos + (
int)m_siHoz.nPage > m_siHoz.nMax)
1405 m_siHoz.nPos = m_siHoz.nMax - m_siHoz.nPage;
1411 m_siHoz.nPage = size.cx;
1413 m_siHoz.nMax = m_siHoz.nPage - 1;
1418 SetScrollPos(TRUE, m_siVer.nPos, TRUE);
1419 SetScrollPos(FALSE, m_siHoz.nPos, TRUE);
1427 __baseCls::OnSize(nType, size);
Definition of the STreeCtrl class.
@ STVICheckBox_PartChecked
static T GetItem(HSTREEITEM hItem)
Get the item data.
HSTREEITEM GetChildItem(HSTREEITEM hItem, BOOL bFirst=TRUE) const
Get the child item.
static HSTREEITEM GetParentItem(HSTREEITEM hItem)
Get the parent item.
HSTREEITEM GetNextItem(HSTREEITEM hItem) const
Get the next item in the tree.
virtual void DeleteItem(HSTREEITEM hItem)
static int GetItemLevel(HSTREEITEM hItem)
HSTREEITEM InsertItem(const T &data, HSTREEITEM hParent=((HSTREEITEM) 0xFFFF0000), HSTREEITEM hInsertAfter=((HSTREEITEM) 0xFFFF0002))
Insert a new item.
static HSTREEITEM GetNextSiblingItem(HSTREEITEM hItem)
Get the next sibling item.
static HSTREEITEM GetPrevSiblingItem(HSTREEITEM hItem)
Get the previous sibling item.
static HSTREEITEM GetRootItem(HSTREEITEM hItem)
Get the root item of the specified node.
void SortChildren(HSTREEITEM hItem, int(__cdecl *funSort)(void *, const void *, const void *), void *pCtx)
Sort the children of a node.
Smart pointer class for managing COM-style reference-counted objects.
Helper class for painting.
virtual CRect GetClientRect() const
Gets the client rectangle.
int GetSbWidth() const
Gets the width of the scrollbar.
virtual BOOL OnScroll(BOOL bVertical, UINT uCode, int nPos)
Handles scroll events.
static int GetDefIndex(DWORD dwState, bool checkAsPushdown=false)
Gets the default index for a given state.
HSTREEITEM HitTest(CPoint &pt)
Performs a hit test on the tree view.
void UpdateScrollBar()
Updates the scroll bars.
COLORREF m_crItemSelBg
Background color of selected items.
BOOL SetItemData(HSTREEITEM hItem, LPARAM lParam) OVERRIDE
Sets the application-defined data of an item.
void ModifyToggleState(HSTREEITEM hItem, DWORD dwStateAdd, DWORD dwStateRemove)
Modifies the toggle state of an item.
BOOL EnsureVisible(HSTREEITEM hItem) OVERRIDE
Ensures an item is visible.
void SortChildren(HSTREEITEM hItem, FunTreeSortCallback sortFunc, void *pCtx) OVERRIDE
Sorts the children of an item.
SAutoRefPtr< ISkinObj > m_pToggleSkin
Skin for the toggle buttons.
BOOL m_bRightClickSel
Flag indicating if right-click selection is enabled.
HSTREEITEM GetRootItem() SCONST OVERRIDE
Gets the root item of the tree.
int m_nVisibleItems
Number of visible items.
virtual void DrawLines(IRenderTarget *pRT, const CRect &rc, HSTREEITEM hItem)
Draws lines for an item.
void ItemLButtonDown(HSTREEITEM hItem, UINT nFlags, CPoint pt)
Handles the left mouse button down event for an item.
virtual void DrawItem(IRenderTarget *pRT, const CRect &rc, HSTREEITEM hItem)
Draws an item.
BOOL RemoveItem(HSTREEITEM hItem) OVERRIDE
Removes an item from the tree.
IListener * m_pListener
Listener for tree view events.
SAutoRefPtr< ISkinObj > m_pItemBgSkin
Skin for the background of items.
COLORREF m_crItemBg
Background color of items.
STreeCtrl()
Constructor for STreeCtrl.
int m_nItemOffset
Offset for item positioning.
BOOL GetItemRect(LPTVITEM pItem, CRect &rcItem)
Gets the rectangle of an item.
virtual ~STreeCtrl()
Destructor for STreeCtrl.
BOOL SetItemText(HSTREEITEM hItem, LPCTSTR lpszItem) OVERRIDE
Sets the text of an item.
int m_nItemHoverBtn
Button currently hovered.
CRect m_rcToggle
Rectangle for the toggle button.
BOOL GetItemImage(HSTREEITEM hItem, int *nImage, int *nSelectedImage) SCONST OVERRIDE
Gets the images of an item.
void PageUp()
Handles the page up action.
void RemoveAllItems() OVERRIDE
Removes all items from the tree.
void ModifyChekcBoxState(HSTREEITEM hItem, DWORD dwStateAdd, DWORD dwStateRemove)
Modifies the checkbox state of an item.
CRect m_rcCheckBox
Rectangle for the checkbox.
virtual int CalcItemWidth(const LPTVITEM pItem)
Calculates the width of an item.
int m_nItemHei
Height of each item.
BOOL CheckChildrenState(HSTREEITEM hItem, BOOL bCheck)
Checks the state of an item's children.
int m_nItemMargin
Margin around each item.
void OnLButtonDown(UINT nFlags, CPoint pt)
Handles the left mouse button down event.
virtual void OnNodeFree(LPTVITEM &pItemData)
Frees the memory associated with an item.
HSTREEITEM GetNextItem(HSTREEITEM hItem) SCONST OVERRIDE
Gets the next item.
BOOL SetItemImage(HSTREEITEM hItem, int nImage, int nSelectedImage) OVERRIDE
Sets the images of an item.
HSTREEITEM GetNextSiblingItem(HSTREEITEM hItem) SCONST OVERRIDE
Gets the next sibling item.
BOOL GetItemText(HSTREEITEM hItem, IStringT *strText) SCONST OVERRIDE
Gets the text of an item.
int ItemHitTest(HSTREEITEM hItem, CPoint &pt) const
Performs a hit test on an item.
CRect m_rcIcon
Rectangle for the icon.
BOOL VerifyItem(HSTREEITEM hItem) const
Verifies if an item is valid.
HSTREEITEM GetParentItem(HSTREEITEM hItem) SCONST OVERRIDE
Gets the parent item.
BOOL m_bCheckBox
Flag indicating if checkboxes are enabled.
void ItemMouseLeave(HSTREEITEM hItem)
Handles the mouse leave event for an item.
void ItemLButtonDbClick(HSTREEITEM hItem, UINT nFlags, CPoint pt)
Handles the left mouse button double-click event for an item.
void RedrawItem(HSTREEITEM hItem)
Redraws an item.
void OnMouseMove(UINT nFlags, CPoint pt)
Handles the mouse move event.
virtual void OnInsertItem(LPTVITEM &pItemData)
Handles the insertion of an item.
void SetChildrenState(HSTREEITEM hItem, int nCheckValue)
Sets the check state of an item's children.
void OnLButtonDbClick(UINT nFlags, CPoint pt)
Handles the left mouse button double-click event.
void ItemMouseMove(HSTREEITEM hItem, UINT nFlags, CPoint pt)
Handles the mouse move event for an item.
int GetItemShowIndex(HSTREEITEM hItemObj)
Gets the index of an item in the visible list.
BOOL IsAncestor(HSTREEITEM hItem1, HSTREEITEM hItem2)
Checks if one item is an ancestor of another.
HSTREEITEM m_hCaptureItem
Handle to the item that has capture.
void PageDown()
Handles the page down action.
int m_nContentWidth
Total content width of the tree.
SAutoRefPtr< ISkinObj > m_pItemSelSkin
Skin for the selected background of items.
BOOL ItemHasChildren(HSTREEITEM hItem) SCONST OVERRIDE
Checks if an item has children.
void OnPaint(IRenderTarget *pRT)
Handles the paint event.
int GetCheckState(HSTREEITEM hItem) SCONST OVERRIDE
Gets the check state of an item.
void OnDestroy()
Handles the destruction of the tree control.
virtual void CalcItemContentWidth(LPTVITEM pItem)
Calculates the content width of an item.
BOOL SelectItem(HSTREEITEM hItem, BOOL bEnsureVisible=TRUE) OVERRIDE
Selects an item.
HSTREEITEM m_hHoverItem
Handle to the item under the hover state.
virtual void LoadItemAttribute(SXmlNode xmlNode, LPTVITEM pItem)
Loads attributes for an item from an XML node.
HSTREEITEM GetChildItem(HSTREEITEM hItem, BOOL bFirst=TRUE) SCONST OVERRIDE
Gets a child item.
int m_nItemPushDownBtn
Button currently pushed down.
UINT m_uItemMask
Mask for item attributes.
void OnMouseLeave()
Handles the mouse leave event.
HSTREEITEM m_hSelItem
Handle to the selected item.
COLORREF m_crItemText
Text color of items.
SAutoRefPtr< ISkinObj > m_pCheckSkin
Skin for the checkboxes.
BOOL m_bHasLines
Flag indicating if lines are drawn between items.
SAutoRefPtr< ISkinObj > m_pLineSkin
Skin for the lines.
void OnLButtonUp(UINT nFlags, CPoint pt)
Handles the left mouse button up event.
virtual void LoadBranch(HSTREEITEM hParent, SXmlNode xmlNode)
Loads a branch of items from an XML node.
virtual BOOL CreateChildren(SXmlNode xmlNode)
Creates child windows from an XML node.
virtual void ItemLayout()
Performs layout calculations for items.
HSTREEITEM GetSelectedItem() SCONST OVERRIDE
Gets the selected item.
void ItemLButtonUp(HSTREEITEM hItem, UINT nFlags, CPoint pt)
Handles the left mouse button up event for an item.
HSTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, LPARAM lParam, HSTREEITEM hParent=STVI_ROOT, HSTREEITEM hInsertAfter=STVI_LAST) OVERRIDE
Inserts a new item into the tree.
int m_nIndent
Indentation between levels.
void SetChildrenVisible(HSTREEITEM hItem, BOOL bVisible)
Sets the visibility of an item's children.
virtual int CalcMaxItemWidth(HSTREEITEM hItem)
Calculates the maximum width of an item and its children.
BOOL Expand(HSTREEITEM hItem, UINT nCode=TVE_EXPAND) OVERRIDE
Expands or collapses an item.
void OnRButtonDown(UINT nFlags, CPoint pt)
Handles the right mouse button down event.
void OnSize(UINT nType, CSize size)
Handles the size event.
LPARAM GetItemData(HSTREEITEM hItem) SCONST OVERRIDE
Gets the application-defined data of an item.
SAutoRefPtr< ISkinObj > m_pIconSkin
Skin for the icons.
void CheckState(HSTREEITEM hItem)
Updates the check state of an item.
virtual void UpdateContentWidth()
Updates the content width of the tree.
HSTREEITEM GetPrevSiblingItem(HSTREEITEM hItem) SCONST OVERRIDE
Gets the previous sibling item.
void SetListener(IListener *pListener)
Sets the listener for tree view events.
COLORREF m_crItemSelText
Text color of selected items.
BOOL SetCheckState(HSTREEITEM hItem, BOOL bCheck) OVERRIDE
Sets the check state of an item.
BOOL FireEvent(IEvtArgs *evt) OVERRIDE
Fires an event.
UINT GetTextAlign() const
Retrieves the text alignment of the window.
BOOL IsVisible(BOOL bCheckParent=FALSE) SCONST OVERRIDE
Checks if the window is visible.
virtual CRect GetClientRect() const
Retrieves the client rectangle of the window.
LRESULT SSendMessage(UINT uMsg, WPARAM wParam=0, LPARAM lParam=0, BOOL *pbMsgHandled=NULL) OVERRIDE
Sends a message to the window.
virtual void BeforePaint(IRenderTarget *pRT, SPainter &painter)
Prepare rendering environment.
void InvalidateRect(LPCRECT lprect) OVERRIDE
Invalidates a specific rectangle area of the window.
BOOL IsUpdateLocked(BOOL bCheckParent=FALSE) SCONST OVERRIDE
Checks if updates to the window are locked.
virtual void AfterPaint(IRenderTarget *pRT, SPainter &painter)
Restore rendering environment.
virtual void DrawText(IRenderTarget *pRT, LPCTSTR pszBuf, int cchText, LPRECT pRect, UINT uFormat)
Draw text content.
void Invalidate() OVERRIDE
Invalidates the entire window.
void BeforePaintEx(IRenderTarget *pRT)
Prepares the drawing environment for the current window's RenderTarget, starting from the top-level w...
Class representing an XML attribute.
bool as_bool(bool def=false) const
Converts the attribute value to a boolean.
Class representing an XML node.
SXmlNode next_sibling() const
Gets the next sibling node in the children list of the parent node.
SXmlAttr first_attribute() const
Gets the first attribute of the node.
SXmlAttr attribute(const wchar_t *name, bool bCaseSensitive=false) const
Gets the attribute with the specified name.
SXmlNode child(const wchar_t *name, bool bCaseSensitive=false) const
Gets the child node, attribute, or next/previous sibling with the specified name.
Interface for rendering target objects.
HRESULT DrawText(LPCTSTR pszText, int cchLen, LPRECT pRc, UINT uFormat) PURE
Draw text within a rectangle.
HRESULT FillSolidRect(LPCRECT pRect, COLORREF cr) PURE
Fill a rectangle with a solid color.
HRESULT OffsetViewportOrg(int xOff, int yOff, LPPOINT lpPoint=NULL) PURE
Offset the viewport origin.
COLORREF SetTextColor(COLORREF color) PURE
Sets the current text color.
Listener interface for tree view events.
Bitfield structure for font style attributes.