Visual C++ 6.0 实用教程.ppt
文本预览下载声明
7.3视图及视图类 7.3.3树控件和树视图 树形视图的风格 7.3视图及视图类 树控件的常用操作 函数InsertItem用来向树控件插入一个新项,操作成功后,函数返回新项的句柄,否则返回NULL。函数原型如下: HTREEITEM InsertItem( UINT nMask, LPCTSTR lpszItem,int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter ); HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST ); HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST ); 函数DeleteItem和DeleteAllItems分别用来删除指定的项和全部的项。它们的原型如下: BOOL DeleteAllItems( ); BOOL DeleteItem( HTREEITEM hItem ); 函数Expand用来用来展开或收缩指定父项的所有子项,其原型如下: BOOL Expand( HTREEETEM hItem, UINT nCode ); 7.3视图及视图类 树形视图控件的通知消息 树视图可以用ClassWizard映射公共控件消息和树控件消息。常用的树控件消息有: TVN_BEGINDRAG 开始拖放操作 TVN_BEGINLABELEDIT 开始编辑标签 TVN_BEGINRDRAG 鼠标右按钮开始拖放操作 TVN_ENDLABELEDIT 标签编辑结束 TVN_ITEMEXPANDED 含有子项的父项已展开或收缩 TVN_ITEMEXPANDING 含有子项的父项将要展开或收缩 TVN_SELCHANGED 当前选择项发生改变 TVN_SELCHANGING 当前选择项将要发生改变 用ClassWizard处理上述这些消息时,其消息处理函数参数中往往会出现NM_TREEVIEW结构,定义如下: typedef struct tagNMTREEVIEW { NMHDR hdr; // 含有通知代码的信息结构 UINT action; // 通知方式标志 TVITEM itemOld; // 原有项的信息 TVITEM itemNew; // 现在项的信息 POINT ptDrag; // 事件产生时,鼠标的位置 } NMTREEVIEW, FAR *LPNMTREEVIEW; 7.3视图及视图类 [例Ex_Tree] 遍历本地磁盘所有的目录。 (1)用MFC AppWziard创建一个单文档应用程序Ex_Tree,在创建的第六步将视图的基类选择为CTreeView。 (2)按快捷键Ctrl+R,选定资源类型Icon,单击Import按钮,从外部调入六个图标,分别表示“我的电脑”、“软驱”、“硬盘”、“光驱”、“文件夹”以及“打开的文件夹”,相应的ID号设为IDI_MYCOMP、IDI_35FLOPPY、IDI_DRIVE、IDI_CDDRIVE、IDI_CLSDFOLD和IDI_OPENFOLD,如图。 图7.12 从外部调入的图标 7.3视图及视图类 (3)为CEx_TreeView类添加下列成员函数和成员函数: public: CImageList m_ImageList; CString m_strPath; // 文件夹路径 void InsertFoldItem(HTREEITEM m_hItem); void SetCtrlStyle(HWND hWnd, DWORD dwNewStyle); InsertFoldItem函数的代码如下: void CEx_TreeView::InsertFoldItem(HTREEITEM m_hItem) { CFileFind finder; BOOL bWorking = finder.FindFile(m_strPath); CString m_str;
显示全部