X-Git-Url: https://git.ucc.asn.au/?p=matches%2Fhonours.git;a=blobdiff_plain;f=research%2Ftransmission_spectroscopy%2FTOF%2FWin32%2B%2B%2Finclude%2Ftreeview.h;fp=research%2Ftransmission_spectroscopy%2FTOF%2FWin32%2B%2B%2Finclude%2Ftreeview.h;h=79b51ce31831e1630612ccc1b300fcede3e1814c;hp=0000000000000000000000000000000000000000;hb=70a96cca12cb006506461d26cd112bab179fe74c;hpb=8caf60af39689a3546074f0c68d14c3a2e28191e diff --git a/research/transmission_spectroscopy/TOF/Win32++/include/treeview.h b/research/transmission_spectroscopy/TOF/Win32++/include/treeview.h new file mode 100644 index 00000000..79b51ce3 --- /dev/null +++ b/research/transmission_spectroscopy/TOF/Win32++/include/treeview.h @@ -0,0 +1,625 @@ +// Win32++ Version 7.3 +// Released: 30th November 2011 +// +// David Nash +// email: dnash@bigpond.net.au +// url: https://sourceforge.net/projects/win32-framework +// +// +// Copyright (c) 2005-2011 David Nash +// +// Permission is hereby granted, free of charge, to +// any person obtaining a copy of this software and +// associated documentation files (the "Software"), +// to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, +// merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom +// the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice +// shall be included in all copies or substantial portions +// of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +// OR OTHER DEALINGS IN THE SOFTWARE. +// +//////////////////////////////////////////////////////// + + + + +#ifndef _WIN32XX_TREEVIEW_H_ +#define _WIN32XX_TREEVIEW_H_ + +#include "wincore.h" +#include "commctrl.h" + +// Disable macros from Windowsx.h +#undef GetNextSibling +#undef GetPrevSibling + +namespace Win32xx +{ + + class CTreeView : public CWnd + { + public: + CTreeView() {} + virtual ~CTreeView() {} + virtual void PreRegisterClass(WNDCLASS &wc); + +// Attributes + COLORREF GetBkColor() const; + HTREEITEM GetChild(HTREEITEM hItem) const; + UINT GetCount() const; + HTREEITEM GetDropHiLightItem() const; + CEdit* GetEditControl() const; + HTREEITEM GetFirstVisible() const; + HIMAGELIST GetImageList(int iImageType) const; + UINT GetIndent() const; + COLORREF GetInsertMarkColor() const; + BOOL GetItem(TVITEM& Item) const; + DWORD_PTR GetItemData(HTREEITEM hItem) const; + int GetItemHeight() const; + BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage ) const; + BOOL GetItemRect(HTREEITEM hItem, CRect& rc, BOOL bTextOnly) const; + CString GetItemText(HTREEITEM hItem, UINT nTextMax /* = 260 */) const; + HTREEITEM GetLastVisible() const; + HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const; + HTREEITEM GetNextSibling(HTREEITEM hItem) const; + HTREEITEM GetNextVisible(HTREEITEM hItem) const; + HTREEITEM GetParentItem(HTREEITEM hItem) const; + HTREEITEM GetPrevSibling(HTREEITEM hItem) const; + HTREEITEM GetPrevVisible(HTREEITEM hItem) const; + HTREEITEM GetRootItem() const; + int GetScrollTime() const; + HTREEITEM GetSelection() const; + COLORREF GetTextColor() const; + CToolTip* GetToolTips() const; + UINT GetVisibleCount() const; + BOOL ItemHasChildren(HTREEITEM hItem) const; + COLORREF SetBkColor(COLORREF clrBk) const; + HIMAGELIST SetImageList(HIMAGELIST himl, int nType) const; + void SetIndent(int indent) const; + BOOL SetInsertMark(HTREEITEM hItem, BOOL fAfter = TRUE) const; + COLORREF SetInsertMarkColor(COLORREF clrInsertMark) const; + BOOL SetItem(TVITEM& Item) const; + BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR szText, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam) const; + BOOL SetItemData(HTREEITEM hItem, DWORD_PTR dwData) const; + int SetItemHeight(SHORT cyItem) const; + BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage) const; + BOOL SetItemText(HTREEITEM hItem, LPCTSTR szText) const; + UINT SetScrollTime(UINT uScrollTime) const; + COLORREF SetTextColor(COLORREF clrText) const; + CToolTip* SetToolTips(CToolTip* pToolTip) const; + +// Operations + HIMAGELIST CreateDragImage(HTREEITEM hItem) const; + BOOL DeleteAllItems() const; + BOOL DeleteItem(HTREEITEM hItem) const; + HWND EditLabel(HTREEITEM hItem) const; + BOOL EndEditLabelNow(BOOL fCancel) const; + BOOL EnsureVisible(HTREEITEM hItem) const; + BOOL Expand(HTREEITEM hItem, UINT nCode) const; + HTREEITEM HitTest(TVHITTESTINFO& ht) const; + HTREEITEM InsertItem(TVINSERTSTRUCT& tvIS) const; + BOOL Select(HTREEITEM hitem, UINT flag) const; + BOOL SelectDropTarget(HTREEITEM hItem) const; + BOOL SelectItem(HTREEITEM hItem) const; + BOOL SelectSetFirstVisible(HTREEITEM hItem) const; + BOOL SortChildren(HTREEITEM hItem, BOOL fRecurse) const; + BOOL SortChildrenCB(TVSORTCB& sort, BOOL fRecurse) const; + + private: + CTreeView(const CTreeView&); // Disable copy construction + CTreeView& operator = (const CTreeView&); // Disable assignment operator + + }; + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +namespace Win32xx +{ + + inline void CTreeView::PreRegisterClass(WNDCLASS &wc) + { + // Set the Window Class + wc.lpszClassName = WC_TREEVIEW; + } + +// Attributes + inline COLORREF CTreeView::GetBkColor() const + // Retrieves the current background color of the control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetBkColor( m_hWnd ); + } + + inline HTREEITEM CTreeView::GetChild(HTREEITEM hItem) const + // Retrieves the first child item of the specified tree-view item. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetChild(m_hWnd, hItem); + } + + inline UINT CTreeView::GetCount() const + // Retrieves a count of the items in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetCount( m_hWnd ); + } + + inline HTREEITEM CTreeView::GetDropHiLightItem() const + // Retrieves the tree-view item that is the target of a drag-and-drop operation. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetDropHilight(m_hWnd); + } + + inline CEdit* CTreeView::GetEditControl() const + // Retrieves the handle to the edit control being used to edit a tree-view item's text. + { + assert(::IsWindow(m_hWnd)); + return (CEdit*)FromHandle(TreeView_GetEditControl(m_hWnd)); + } + + inline HTREEITEM CTreeView::GetFirstVisible() const + // Retrieves the first visible item in a tree-view control window. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetFirstVisible(m_hWnd); + } + + inline HIMAGELIST CTreeView::GetImageList(int iImageType) const + // Retrieves the handle to the normal or state image list associated with a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetImageList( m_hWnd, iImageType ); + } + + inline UINT CTreeView::GetIndent() const + // Retrieves the amount, in pixels, that child items are indented relative to their parent items. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetIndent( m_hWnd ); + } + + inline COLORREF CTreeView::GetInsertMarkColor() const + // Retrieves the color used to draw the insertion mark for the tree view. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetInsertMarkColor( m_hWnd ); + } + + inline BOOL CTreeView::GetItem(TVITEM& Item) const + // Retrieves some or all of a tree-view item's attributes. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetItem( m_hWnd, &Item ); + } + + inline DWORD_PTR CTreeView::GetItemData(HTREEITEM hItem) const + // Retrieves a tree-view item's application data. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.mask = TVIF_PARAM; + tvi.hItem = hItem; + TreeView_GetItem( m_hWnd, &tvi ); + return tvi.lParam; + } + + inline int CTreeView::GetItemHeight() const + // Retrieves the current height of the tree-view item. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetItemHeight( m_hWnd ); + } + + inline BOOL CTreeView::GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage ) const + // Retrieves the index of the tree-view item's image and selected image. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE; + tvi.hItem = hItem; + BOOL bResult = TreeView_GetItem( m_hWnd, &tvi ); + nImage = tvi.iImage; + nSelectedImage = tvi.iSelectedImage; + return bResult; + } + + inline BOOL CTreeView::GetItemRect(HTREEITEM hItem, CRect& rc, BOOL bTextOnly) const + // Retrieves the bounding rectangle for a tree-view item and indicates whether the item is visible. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetItemRect( m_hWnd, hItem, &rc, bTextOnly ); + } + + inline CString CTreeView::GetItemText(HTREEITEM hItem, UINT nTextMax /* = 260 */) const + // Retrieves the text for a tree-view item. + // Note: Although the tree-view control allows any length string to be stored + // as item text, only the first 260 characters are displayed. + { + assert(::IsWindow(m_hWnd)); + + CString t; + if (nTextMax > 0) + { + TVITEM tvi = {0}; + tvi.hItem = hItem; + tvi.mask = TVIF_TEXT; + tvi.cchTextMax = nTextMax; + std::vector vTChar(nTextMax +1, _T('\0')); + TCHAR* pTCharArray = &vTChar.front(); + tvi.pszText = pTCharArray; + ::SendMessage(m_hWnd, TVM_GETITEM, 0L, (LPARAM)&tvi); + t = tvi.pszText; + } + return t; + } + + inline HTREEITEM CTreeView::GetLastVisible() const + // Retrieves the last expanded item in a tree-view control. + // This does not retrieve the last item visible in the tree-view window. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetLastVisible(m_hWnd); + } + + inline HTREEITEM CTreeView::GetNextItem(HTREEITEM hItem, UINT nCode) const + // Retrieves the tree-view item that bears the specified relationship to a specified item. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetNextItem( m_hWnd, hItem, nCode); + } + + inline HTREEITEM CTreeView::GetNextSibling(HTREEITEM hItem) const + // Retrieves the next sibling item of a specified item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetNextSibling(m_hWnd, hItem); + } + + inline HTREEITEM CTreeView::GetNextVisible(HTREEITEM hItem) const + // Retrieves the next visible item that follows a specified item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetNextVisible(m_hWnd, hItem); + } + + inline HTREEITEM CTreeView::GetParentItem(HTREEITEM hItem) const + // Retrieves the parent item of the specified tree-view item. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetParent(m_hWnd, hItem); + } + + inline HTREEITEM CTreeView::GetPrevSibling(HTREEITEM hItem) const + // Retrieves the previous sibling item of a specified item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetPrevSibling(m_hWnd, hItem); + } + + inline HTREEITEM CTreeView::GetPrevVisible(HTREEITEM hItem) const + // Retrieves the first visible item that precedes a specified item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetPrevVisible(m_hWnd, hItem); + } + + inline HTREEITEM CTreeView::GetRootItem() const + // Retrieves the topmost or very first item of the tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetRoot(m_hWnd); + } + + inline int CTreeView::GetScrollTime() const + // Retrieves the maximum scroll time for the tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetScrollTime( m_hWnd ); + } + + inline HTREEITEM CTreeView::GetSelection() const + // Retrieves the currently selected item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetSelection(m_hWnd); + } + + inline COLORREF CTreeView::GetTextColor() const + // Retrieves the current text color of the control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetTextColor( m_hWnd ); + } + + inline CToolTip* CTreeView::GetToolTips() const + // Retrieves the handle to the child ToolTip control used by a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return (CToolTip*) FromHandle( TreeView_GetToolTips( m_hWnd ) ); + } + + inline UINT CTreeView::GetVisibleCount() const + // Obtains the number of items that can be fully visible in the client window of a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_GetVisibleCount( m_hWnd ); + } + + inline BOOL CTreeView::ItemHasChildren(HTREEITEM hItem) const + // Returns true of the tree-view item has one or more children + { + assert(::IsWindow(m_hWnd)); + + if (TreeView_GetChild( m_hWnd, hItem )) + return TRUE; + + return FALSE; + } + + inline COLORREF CTreeView::SetBkColor(COLORREF clrBk) const + // Sets the background color of the control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetBkColor( m_hWnd, clrBk ); + } + + inline HIMAGELIST CTreeView::SetImageList(HIMAGELIST himl, int nType) const + // Sets the normal or state image list for a tree-view control + // and redraws the control using the new images. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetImageList( m_hWnd, himl, nType ); + } + + inline void CTreeView::SetIndent(int indent) const + // Sets the width of indentation for a tree-view control + // and redraws the control to reflect the new width. + { + assert(::IsWindow(m_hWnd)); + TreeView_SetIndent( m_hWnd, indent ); + } + + inline BOOL CTreeView::SetInsertMark(HTREEITEM hItem, BOOL fAfter/* = TRUE*/) const + // Sets the insertion mark in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetInsertMark( m_hWnd, hItem, fAfter ); + } + + inline COLORREF CTreeView::SetInsertMarkColor(COLORREF clrInsertMark) const + // Sets the color used to draw the insertion mark for the tree view. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetInsertMarkColor( m_hWnd, clrInsertMark ); + } + + inline BOOL CTreeView::SetItem(TVITEM& Item) const + // Sets some or all of a tree-view item's attributes. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetItem( m_hWnd, &Item ); + } + + inline BOOL CTreeView::SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR szText, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam) const + // Sets some or all of a tree-view item's attributes. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.hItem = hItem; + tvi.mask = nMask; + tvi.pszText = (LPTSTR)szText; + tvi.iImage = nImage; + tvi.iSelectedImage = nSelectedImage; + tvi.state = nState; + tvi.stateMask = nStateMask; + tvi.lParam = lParam; + return TreeView_SetItem( m_hWnd, &tvi ); + } + + inline BOOL CTreeView::SetItemData(HTREEITEM hItem, DWORD_PTR dwData) const + // Sets the tree-view item's application data. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.hItem = hItem; + tvi.mask = TVIF_PARAM; + tvi.lParam = dwData; + return TreeView_SetItem( m_hWnd, &tvi ); + } + + inline int CTreeView::SetItemHeight(SHORT cyItem) const + // Sets the height of the tree-view items. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetItemHeight( m_hWnd, cyItem ); + } + + inline BOOL CTreeView::SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage) const + // Sets the tree-view item's application image. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.hItem = hItem; + tvi.iImage = nImage; + tvi.iSelectedImage = nSelectedImage; + tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE; + return TreeView_SetItem(m_hWnd, &tvi ); + } + + inline BOOL CTreeView::SetItemText(HTREEITEM hItem, LPCTSTR szText) const + // Sets the tree-view item's application text. + { + assert(::IsWindow(m_hWnd)); + + TVITEM tvi = {0}; + tvi.hItem = hItem; + tvi.pszText = (LPTSTR)szText; + tvi.mask = TVIF_TEXT; + return TreeView_SetItem(m_hWnd, &tvi ); + } + + inline UINT CTreeView::SetScrollTime(UINT uScrollTime) const + // Sets the maximum scroll time for the tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetScrollTime( m_hWnd, uScrollTime ); + } + + inline COLORREF CTreeView::SetTextColor(COLORREF clrText) const + // Sets the text color of the control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SetTextColor( m_hWnd, clrText ); + } + + inline CToolTip* CTreeView::SetToolTips(CToolTip* pToolTip) const + // Sets a tree-view control's child ToolTip control. + { + assert(::IsWindow(m_hWnd)); + HWND hToolTip = pToolTip? pToolTip->GetHwnd() : 0; + return (CToolTip*) FromHandle( TreeView_SetToolTips( m_hWnd, hToolTip ) ); + } + + // Operations + + inline HIMAGELIST CTreeView::CreateDragImage(HTREEITEM hItem) const + // Creates a dragging bitmap for the specified item in a tree-view control. + // It also creates an image list for the bitmap and adds the bitmap to the image list. + // An application can display the image when dragging the item by using the image list functions. + { + assert(::IsWindow(m_hWnd)); + return TreeView_CreateDragImage( m_hWnd, hItem ); + } + + inline BOOL CTreeView::DeleteAllItems() const + // Deletes all items from a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_DeleteAllItems( m_hWnd ); + } + + inline BOOL CTreeView::DeleteItem(HTREEITEM hItem) const + // Removes an item and all its children from a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_DeleteItem( m_hWnd, hItem ); + } + + inline HWND CTreeView::EditLabel(HTREEITEM hItem) const + // Begins in-place editing of the specified item's text, replacing the text of the item + // with a single-line edit control containing the text. + // The specified item is implicitly selected and focused. + { + assert(::IsWindow(m_hWnd)); + return TreeView_EditLabel( m_hWnd, hItem ); + } + + inline BOOL CTreeView::EndEditLabelNow(BOOL fCancel) const + // Ends the editing of a tree-view item's label. + { + assert(::IsWindow(m_hWnd)); + return TreeView_EndEditLabelNow(m_hWnd, fCancel); + } + + inline BOOL CTreeView::EnsureVisible(HTREEITEM hItem) const + // Ensures that a tree-view item is visible, expanding the parent item or + // scrolling the tree-view control, if necessary. + { + assert(::IsWindow(m_hWnd)); + return TreeView_EnsureVisible( m_hWnd, hItem ); + } + + inline BOOL CTreeView::Expand(HTREEITEM hItem, UINT nCode) const + // The TreeView_Expand macro expands or collapses the list of child items associated + // with the specified parent item, if any. + { + assert(::IsWindow(m_hWnd)); + return TreeView_Expand( m_hWnd, hItem, nCode ); + } + + inline HTREEITEM CTreeView::HitTest(TVHITTESTINFO& ht) const + // Determines the location of the specified point relative to the client area of a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_HitTest( m_hWnd, &ht ); + } + + inline HTREEITEM CTreeView::InsertItem(TVINSERTSTRUCT& tvIS) const + // Inserts a new item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_InsertItem( m_hWnd, &tvIS ); + } + + inline BOOL CTreeView::Select(HTREEITEM hitem, UINT flag) const + // Selects the specified tree-view item, scrolls the item into view, or redraws + // the item in the style used to indicate the target of a drag-and-drop operation. + { + assert(::IsWindow(m_hWnd)); + return TreeView_Select(m_hWnd, hitem, flag ); + } + + inline BOOL CTreeView::SelectDropTarget(HTREEITEM hItem) const + // Redraws a specified tree-view control item in the style used to indicate the + // target of a drag-and-drop operation. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SelectDropTarget(m_hWnd, hItem); + } + + inline BOOL CTreeView::SelectItem(HTREEITEM hItem) const + // Selects the specified tree-view item. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SelectItem(m_hWnd, hItem); + } + + inline BOOL CTreeView::SelectSetFirstVisible(HTREEITEM hItem) const + // Scrolls the tree-view control vertically to ensure that the specified item is visible. + // If possible, the specified item becomes the first visible item at the top of the control's window. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SelectSetFirstVisible(m_hWnd, hItem); + } + + inline BOOL CTreeView::SortChildren(HTREEITEM hItem, BOOL fRecurse) const + // Sorts the child items of the specified parent item in a tree-view control. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SortChildren( m_hWnd, hItem, fRecurse ); + } + + inline BOOL CTreeView::SortChildrenCB(TVSORTCB& sort, BOOL fRecurse) const + // Sorts tree-view items using an application-defined callback function that compares the items. + { + assert(::IsWindow(m_hWnd)); + return TreeView_SortChildrenCB( m_hWnd, &sort, fRecurse ); + } + + +} // namespace Win32xx + +#endif // #ifndef _WIN32XX_TREEVIEW_H_ +