| | |
| | | // 便捷:通过可见行号取 Node* |
| | | Node* GetNodeByVisibleIndex(int i) const; |
| | | |
| | | private: |
| | | void appendVisible(Node* n); |
| | | CRect expanderRectForRow(int row) const; // 首列展开按钮区域 |
| | | virtual void PreSubclassWindow(); |
| | | |
| | | protected: |
| | | // 消息 |
| | | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); |
| | | afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult); |
| | | afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult); |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | | private: |
| | | std::vector<std::unique_ptr<Node>> m_roots; // 顶层节点 |
| | | std::vector<Node*> m_visible; // 展开后的可见节点顺序 |
| | | int m_expanderPadding = 6; // 首列内侧边距 |
| | | int m_expanderSize = 10; // 小三角/方块大小 |
| | | std::vector<std::unique_ptr<Node>> m_roots; // 顶层节点 |
| | | std::vector<Node*> m_visible; // 展开后的可见节点顺序 |
| | | int m_expanderPadding = 6; // 首列内侧边距 |
| | | int m_expanderSize = 10; // 小三角/方块大小 |
| | | int m_textGap = 6; |
| | | |
| | | void appendVisible(Node* n); |
| | | CRect expanderRectForRow(int row) const; // 首列展开按钮区域 |
| | | }; |
| | | |
| | | |