📄 treeoptionsctrl.h
字号:
CTreeOptionsCtrl* m_pTreeCtrl;
HTREEITEM m_hTreeCtrlItem;
BOOL m_bDoNotDestroyUponLoseFocus;
friend class CTreeOptionsCtrl;
SYSTEMTIME m_SystemTime;
};
//Class which represents a time control used by the list options class
class CTreeOptionsTimeCtrl : public CTreeOptionsDateCtrl
{
public:
//Constructors / Destructors
CTreeOptionsTimeCtrl();
virtual ~CTreeOptionsTimeCtrl();
//methods
virtual CString GetDisplayText(const SYSTEMTIME& st);
protected:
virtual DWORD GetWindowStyle();
//{{AFX_VIRTUAL(CTreeOptionsTimeCtrl)
//}}AFX_VIRTUAL
//{{AFX_MSG(CTreeOptionsTimeCtrl)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
DECLARE_DYNCREATE(CTreeOptionsTimeCtrl)
};
//Class which represents IP Address control used by the list options class
class CTreeOptionsIPAddressCtrl : public CIPAddressCtrl
{
public:
//Constructors / Destructors
CTreeOptionsIPAddressCtrl();
virtual ~CTreeOptionsIPAddressCtrl();
//methods
virtual CString GetDisplayText(DWORD dwAddress);
protected:
//Misc methods
void SetTreeBuddy(CTreeOptionsCtrl* pTreeCtrl) { m_pTreeCtrl = pTreeCtrl; };
void SetTreeItem(HTREEITEM hItem) { m_hTreeCtrlItem = hItem; };
virtual DWORD GetWindowStyle();
DWORD GetIPAddress() const { return m_dwAddress; };
void SetIPAddress(DWORD dwAddress) { m_dwAddress = dwAddress; };
virtual BOOL IsRelatedWnd(CWnd* pChild);
//{{AFX_VIRTUAL(CTreeOptionsIPAddressCtrl)
//}}AFX_VIRTUAL
//{{AFX_MSG(CTreeOptionsIPAddressCtrl)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg UINT OnGetDlgCode ();
afx_msg void OnKillFocus(CWnd* pNewWnd);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
DECLARE_DYNCREATE(CTreeOptionsIPAddressCtrl)
//Member variables
CTreeOptionsCtrl* m_pTreeCtrl;
HTREEITEM m_hTreeCtrlItem;
BOOL m_bDoNotDestroyUponLoseFocus;
friend class CTreeOptionsCtrl;
DWORD m_dwAddress;
};
//Class which is stored in the tree options item data
class CTreeOptionsItemData
{
public:
//Enums
enum ControlType
{
Unknown,
Normal,
Spin,
FileBrowser,
FolderBrowser,
ColorBrowser,
FontBrowser,
CheckBox,
RadioButton,
ComboBox,
EditBox,
DateTimeCtrl,
IPAddressCtrl,
OpaqueBrowser,
};
//Data
CRuntimeClass* m_pRuntimeClass1;
CRuntimeClass* m_pRuntimeClass2;
ControlType m_Type;
DWORD m_dwItemData;
COLORREF m_Color;
LOGFONT m_Font;
SYSTEMTIME m_DateTime;
DWORD m_dwIPAddress;
BOOL m_bDrawColorForIcon;
//Methods
CTreeOptionsItemData()
{
m_Type = Unknown;
m_pRuntimeClass1 = NULL;
m_pRuntimeClass2 = NULL;
m_dwItemData = (DWORD) -1;
m_Color = RGB(255, 0, 0);
ZeroMemory(&m_Font, sizeof(LOGFONT));
ZeroMemory(&m_DateTime, sizeof(SYSTEMTIME));
m_dwIPAddress = 0;
m_bDrawColorForIcon = TRUE;
}
};
//The actual tree options control class
class CTreeOptionsCtrl : public CTreeCtrl
{
public:
//Constructors / Destructors
CTreeOptionsCtrl();
virtual ~CTreeOptionsCtrl();
//Misc
void SetAutoSelect(BOOL bAutoSelect) { m_bAutoSelect = bAutoSelect; };
BOOL GetAutoSelect() const { return m_bAutoSelect; };
void SetImageListResourceIDToUse(UINT nResourceID) { m_nilID = nResourceID; };
UINT GetImageListResourceIDToUse() const { return m_nilID; };
void SetToggleOverIconOnly(BOOL bToggle) { m_bToggleOverIconOnly = bToggle; };
BOOL GetToggleOverIconOnly() const { return m_bToggleOverIconOnly; };
DWORD GetUserItemData(HTREEITEM hItem) const;
BOOL SetUserItemData(HTREEITEM hItem, DWORD dwData);
void SetTextSeparator(const CString& sSeparator) { m_sSeparator = sSeparator; };
CString GetTextSeparator() const { return m_sSeparator; };
void Clear();
virtual BOOL DeleteAllItems();
//Inserting items into the control
HTREEITEM InsertGroup(LPCTSTR lpszItem, int nImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hAfter = TVI_LAST, DWORD dwItemData = -1);
HTREEITEM InsertCheckBox(LPCTSTR lpszItem, HTREEITEM hParent, BOOL bCheck = TRUE, HTREEITEM hAfter = TVI_LAST, DWORD dwItemData = -1);
HTREEITEM InsertRadioButton(LPCTSTR lpszItem, HTREEITEM hParent, BOOL bCheck = TRUE, HTREEITEM hAfter = TVI_LAST, DWORD dwItemData = -1);
//Validation methods
BOOL IsGroup(HTREEITEM hItem) const;
BOOL IsCheckBox(HTREEITEM hItem) const;
BOOL IsRadioButton(HTREEITEM hItem) const;
BOOL IsEditBox(HTREEITEM hItem) const;
BOOL IsFileItem(HTREEITEM hItem) const;
BOOL IsFolderItem(HTREEITEM hItem) const;
BOOL IsColorItem(HTREEITEM hItem) const;
BOOL IsFontItem(HTREEITEM hItem) const;
BOOL IsDateTimeItem(HTREEITEM hItem) const;
BOOL IsIPAddressItem(HTREEITEM hItem) const;
BOOL IsOpaqueItem(HTREEITEM hItem) const;
//Setting / Getting combo states
BOOL SetCheckBox(HTREEITEM hItem, BOOL bCheck);
BOOL GetCheckBox(HTREEITEM hItem, BOOL& bCheck) const;
//Setting / Getting radio states
virtual BOOL SetRadioButton(HTREEITEM hParent, int nIndex);
virtual BOOL SetRadioButton(HTREEITEM hItem);
BOOL GetRadioButton(HTREEITEM hParent, int& nIndex, HTREEITEM& hCheckItem) const;
BOOL GetRadioButton(HTREEITEM hItem, BOOL& bCheck) const;
//Enable / Disbale items
BOOL SetGroupEnable(HTREEITEM hItem, BOOL bEnable);
BOOL SetCheckBoxEnable(HTREEITEM hItem, BOOL bEnable);
BOOL SetRadioButtonEnable(HTREEITEM hItem, BOOL bEnable);
BOOL GetRadioButtonEnable(HTREEITEM hItem, BOOL& bEnable) const;
BOOL GetCheckBoxEnable(HTREEITEM hItem, BOOL& bEnable) const;
//Adding a combo box to an item
BOOL AddComboBox(HTREEITEM hItem, CRuntimeClass* pRuntimeClass, DWORD dwItemData = -1);
CString GetComboText(HTREEITEM hItem) const;
void SetComboText(HTREEITEM hItem, const CString& sComboText);
//Adding an edit box (and a spin control) to an item
BOOL AddEditBox(HTREEITEM hItem, CRuntimeClass* pRuntimeClassEditCtrl, DWORD dwItemData = -1);
BOOL AddEditBox(HTREEITEM hItem, CRuntimeClass* pRuntimeClassEditCtrl, CRuntimeClass* pRuntimeClassSpinCtrl, DWORD dwItemData = -1);
CString GetEditText(HTREEITEM hItem) const;
void SetEditText(HTREEITEM hItem, const CString& sEditText);
//Adding a file / Folder edit box (and a browse button) to an item
BOOL AddFileEditBox(HTREEITEM hItem, CRuntimeClass* pRuntimeClassEditCtrl, CRuntimeClass* pRuntimeClassButton, DWORD dwItemData = -1);
CString GetFileEditText(HTREEITEM hItem) const;
void SetFileEditText(HTREEITEM hItem, const CString& sEditText);
BOOL AddFolderEditBox(HTREEITEM hItem, CRuntimeClass* pRuntimeClassEditCtrl, CRuntimeClass* pRuntimeClassButton, DWORD dwItemData = -1);
CString GetFolderEditText(HTREEITEM hItem) const;
void SetFolderEditText(HTREEITEM hItem, const CString& sEditText);
//Adding a Color selector to an item
BOOL AddColorSelector(HTREEITEM hItem, CRuntimeClass* pRuntimeClassButton, DWORD dwItemData = -1, BOOL bDrawColorForIcon = TRUE);
COLORREF GetColor(HTREEITEM hItem) const;
void SetColor(HTREEITEM hItem, COLORREF color);
//Adding a font name selector to an item
BOOL AddFontSelector(HTREEITEM hItem, CRuntimeClass* pRuntimeClassButton, DWORD dwItemData = -1);
void GetFontItem(HTREEITEM hItem, LOGFONT* pLogFont) const;
void SetFontItem(HTREEITEM hItem, const LOGFONT* pLogFont);
//Adding a Date Time selector to an item
BOOL AddDateTime(HTREEITEM hItem, CRuntimeClass* pRuntimeClassDateTime, DWORD dwItemData = -1);
void GetDateTime(HTREEITEM hItem, SYSTEMTIME& st) const;
void SetDateTime(HTREEITEM hItem, const SYSTEMTIME& st);
//Adding an IP Address selector to an item
BOOL AddIPAddress(HTREEITEM hItem, CRuntimeClass* pRuntimeClassIPAddress, DWORD dwItemData = -1);
DWORD GetIPAddress(HTREEITEM hItem) const;
void SetIPAddress(HTREEITEM hItem, DWORD dwAddress);
//Adding a Opaque selector to an item
BOOL AddOpaque(HTREEITEM hItem, CRuntimeClass* pRuntimeClass1, CRuntimeClass* pRuntimeClass2, DWORD dwItemData = -1);
DWORD GetOpaque(HTREEITEM hItem) const;
void SetOpaque(HTREEITEM hItem, DWORD dwItemData);
//Virtual methods
virtual void OnCreateImageList();
virtual HTREEITEM CopyItem(HTREEITEM hItem, HTREEITEM htiNewParent, HTREEITEM htiAfter = TVI_LAST);
virtual HTREEITEM CopyBranch(HTREEITEM htiBranch, HTREEITEM htiNewParent, HTREEITEM htiAfter = TVI_LAST);
protected:
//Variables
CImageList m_ilTree;
UINT m_nilID;
CTreeOptionsCombo* m_pCombo;
CTreeOptionsEdit* m_pEdit;
CTreeOptionsSpinCtrl* m_pSpin;
CTreeOptionsBrowseButton* m_pButton;
CTreeOptionsDateCtrl* m_pDateTime;
CTreeOptionsIPAddressCtrl* m_pIPAddress;
HTREEITEM m_hControlItem;
BOOL m_bToggleOverIconOnly;
BOOL m_bAutoSelect;
CFont m_Font;
CString m_sSeparator;
BOOL m_bBeingCleared;
//Methods
virtual void DestroyOldChildControl();
virtual void RemoveChildControlText(HTREEITEM hItem);
virtual void CreateNewChildControl(HTREEITEM hItem);
virtual void CreateSpinCtrl(CRuntimeClass* pRuntimeClassSpinCtrl, CRect rItem, CRect rText, CRect rPrimaryControl);
virtual void CreateBrowseButton(CRuntimeClass* pRuntimeClassBrowseButton, CRect rItem, CRect rText);
virtual void UpdateTreeControlValueFromChildControl(HTREEITEM hItem);
virtual void HandleChildControlLosingFocus();
virtual void HandleCheckBox(HTREEITEM hItem, BOOL bCheck);
virtual BOOL SetEnabledSemiCheckBox(HTREEITEM hItem, BOOL bSemi);
virtual BOOL GetSemiCheckBox(HTREEITEM hItem, BOOL& bSemi) const;
virtual int GetIndentPostion(HTREEITEM hItem) const;
virtual void MemDeleteAllItems(HTREEITEM hParent);
//{{AFX_VIRTUAL(CTreeOptionsCtrl)
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
//{{AFX_MSG(CTreeOptionsCtrl)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnDestroy();
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
afx_msg void OnKillFocus(CWnd* pNewWnd);
//}}AFX_MSG
afx_msg BOOL OnClick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg BOOL OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg BOOL OnDeleteItem(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
afx_msg LRESULT OnSetFocusToChild(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnRepositionChild(WPARAM wParam, LPARAM lParam);
afx_msg BOOL OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg BOOL OnItemExpanding(NMHDR* pNMHDR, LRESULT* pResult);
DECLARE_DYNAMIC(CTreeOptionsCtrl)
DECLARE_MESSAGE_MAP()
friend class CTreeOptionsEdit;
friend class CTreeOptionsStatic;
friend class CTreeOptionsCombo;
friend class CTreeOptionsSpinCtrl;
friend class CTreeOptionsBrowseButton;
friend class CTreeOptionsDateCtrl;
friend class CTreeOptionsIPAddressCtrl;
};
//Dialog Data exchange support
void DDX_TreeCheck(CDataExchange* pDX, int nIDC, HTREEITEM hItem, BOOL& bCheck);
void DDX_TreeRadio(CDataExchange* pDX, int nIDC, HTREEITEM hParent, int& nIndex);
void DDX_TreeEdit(CDataExchange* pDX, int nIDC, HTREEITEM hItem, CString& sText);
void DDX_TreeEdit(CDataExchange* pDX, int nIDC, HTREEITEM hItem, int& nValue);
void DDX_TreeCombo(CDataExchange* pDX, int nIDC, HTREEITEM hItem, CString& sText);
void DDX_TreeFileEdit(CDataExchange* pDX, int nIDC, HTREEITEM hItem, CString& sText);
void DDX_TreeFolderEdit(CDataExchange* pDX, int nIDC, HTREEITEM hItem, CString& sText);
void DDX_TreeColor(CDataExchange* pDX, int nIDC, HTREEITEM hItem, COLORREF& color);
void DDX_TreeFont(CDataExchange* pDX, int nIDC, HTREEITEM hItem, LOGFONT* pLogFont);
void DDX_TreeBoolean(CDataExchange* pDX, int nIDC, HTREEITEM hItem, BOOL& bValue);
void DDX_TreeDateTime(CDataExchange* pDX, int nIDC, HTREEITEM hItem, SYSTEMTIME& st);
void DDX_TreeIPAddress(CDataExchange* pDX, int nIDC, HTREEITEM hItem, DWORD& dwAddress);
#endif //__TREEOPTIONSCTRL_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -