设为首页 加入收藏

TOP

多标签视图类CTabView的设计实现 (二)
2014-11-24 00:12:00 来源: 作者: 【 】 浏览:97
Tags:标签 CTabView 设计 实现
62 void SetActiveViewIndex(int iIndex);
63 void SetActiveView(const CWnd* pWnd);
64
65 //按索引获取某个视图页面
66 CWnd* GetView(int iIndex) const;
67 //按窗口获取视图页面的索引
68 int GetIndex(const CWnd* pWnd) const;
69
70 //获取视图页面数量
71 int GetViewCount() const;
72
73 //设置视图页面的标题
74 BOOL SetViewTitle(int iIndex,LPCTSTR pszTitle);
75 BOOL SetViewTitle(const CWnd* pWnd,LPCTSTR pszTitle);
76 //获取视图页面的标题
77 BOOL GetViewTitle(const CWnd* pWnd,LPTSTR& pszTitle) const;
78 BOOL GetViewTitle(int iIndex,LPTSTR& pszTitle) const;
79
80 //设置视图页面的图像
81 BOOL SetViewImage(const CWnd* pWnd,int iImage);
82 BOOL SetViewImage(int iIndex,int iImage);
83 //获取视图页面的图像
84 BOOL GetViewImage(const CWnd* pWnd,int& iImage) const;
85 BOOL GetViewImage(int iIndex,int& iImage) const;
86
87 //设置视图页面的数据
88 BOOL SetViewData(int iIndex,LPVOID pData);
89 BOOL SetViewData(const CWnd* pWnd,LPVOID pData);
90 //获取视图页面的数据
91 BOOL GetViewData(int iIndex,LPVOID& pData) const;
92 BOOL GetViewData(const CWnd* pWnd,LPVOID& pData) const;
93
94 //是否为内部创建的视图页面
95 BOOL IsInnerView(const CWnd* pWnd,BOOL& bInner) const;
96 BOOL IsInnerView(int iIndex,BOOL& bInner) const;
97
98 //设置tab标签可显示的最大文本长度
99 void SetTabMaxTextLen(size_t len);
100 //获取tab标签可显示的最大文本长度
101 size_t GetTabMaxTextLen() const;
102
103 virtual void ShortenTitle(LPCTSTR pszTitle,CString& strShortTitle);
104
105protected:
106 BOOL SetViewInner(const CWnd* pWnd,BOOL bInner);
107 BOOL SetViewInner(int iIndex,BOOL bInner);
108 DWORD GetUniqueId();
109 BOOL IsValidViewIndex(int iIndex) const;
110 void UpdateLayout();
111
112protected:
113 virtual BOOL SubWindowProc(UINT uMsg,WPARAM wParam,LPARAM lParam);
114 virtual int CalcTabHeight();
115 virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItem);
116 virtual void OnViewActivated(int iIndex);
117 virtual void OnTabContextMenu(int iIndex,CPoint point);
118 virtual BOOL UpdateTooltipText(LPNMTTDISPINFO pTTDI);
119
120protected:
121 DECLARE_MESSAGE_MAP()
122 afx_msg int OnCreate(LPCREATESTRUCT lpcs);
123 afx_msg void OnDestroy();
124 afx_msg void OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult);
125 afx_msg void OnTcnSelChange(NMHDR* pNMHDR,LRESULT *pResult);
126 afx_msg void OnSize(UINT nType, int cx, int cy);
127 afx_msg void OnSetFocus(CWnd* pOldWnd);
128 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
129
130public:
131 virtual void OnInitialUpdate();
132
133private:
134 CArray m_UniqueIDs;
135 int m_iActiveView;
136 int m_cyTabHeight;
137 size_t m_nMaxTabTextLen;
138};
139
140#endif
从上可知,CTabView主要包括2大类操作方法,一是针对视图页面窗口,二是针对Tab标签扩展数据。说明如下:1)增加视图页面:AddIView,有2个重载形式,其中带CRuntimeClass和CCreateConext类型参数的用于创建内部窗口,成功返回对应的窗口,否则为NULL;带CWnd参数的用于容纳外部窗口,成功返回TRUE,否则返回FALSE。2)插入视图页面:InsertView,有2个重载形式,其中带CRuntimeClass和CCreateConext类型参数的用于创建内部窗口,成功返回对应的窗口,否则为NULL;带CWnd参数的用于容纳外部窗口,成功返回TRUE,否则返回FALSE。3)移除某个视图页面:RemoveView,有2个重载形式,其中int类型参数的用于按索引移除,CWnd类型的用于按窗口对象移除。4)移除所有视图页面:RemoveAllView。5)获取活动视图页面:有2个方法,GetActiveView如果无活动视图页面,则返回NULL,否则返回对应的窗口;GetActiveViewIndex如果无活动视图页面,则返回-1,否则返回>=0的索引值。5)设置活动视图页面:有2个方法:SetActiveView按窗口来设置,SetActiveViewIndex按索引来设置。6)视图页面窗口与索引的相互转换:GetView由窗口得到其索引,操作失败返回-1,
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数组中a和&a的区别 下一篇红黑树及生成超过32768随机数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: