本章涉及的技术点如下:
利用树形控件显示本地文件路径
利用图形列表控件显示指定路径下的文件(文件图标及名称)
利用多线程技术检索文件
通过Shell接口便利系统文件和文件夹
树形视图控件
1、首先先继承 CTreeView 为基类
2、在初始化中可以插入相应的 列表,步骤如下:
a:获得 插入的名称和图标
b;通过树形控件插入节点使用的结构体 赋值 相应的名称、图标和位置(这个结构体决定插入的具体情况)
c:最后再使用 InsertItem(&tvis) 插入;
3、可以根据 点击 或是 扩展 等等响应相应的处理函数
列表型视图控件
1、首先先继承 CListView 为基类
2、在初始化中 可以插入相应的项目
3、可以根据 双击 等等响应相应的处理函数
// 分割客户区窗口
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_wndSplitter.CreateStatic(this, 1, 2))
{
return false;
}
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(DirTreeView), CSize(200, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return false;
}
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyExploer_CopyView), CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return false;
}
return TRUE;
//
return CFrameWnd::OnCreateClient(lpcs, pContext);
}
//注意标记路径呀“_T("C:\\")”,之前写的是NULL,一直显示不出来,害死我了
sys_small_icon = (HIMAGELIST)SHGetFileInfo(_T("C:\\"), 0, &sfi, sizeof(sfi),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
//通过 主体框架,实现 视图的互相调用
CMainFrame* mFrm = (CMainFrame*)AfxGetMainWnd();
CMyExploer_CopyView *filelist = (CMyExploer_CopyView *)(mFrm->m_wndSplitter.GetPane(0, 1));
// 在类中声明一个静态变量,需要在定义文件的函数外 定义初始化
static CString g_path_selected;
CString DirTreeView::g_path_selected = _T("");
工具栏图标相应函数的位置:
工具栏的图标 相应函数 放在 主窗口里,(MainFrame),,这样客户区里的两个分隔栏隔开的两个范围都可以使用
数据在view之间的调用之困惑:
新建的类数据,在 Doc 声明,这样在 几个view 中来回调用会很方便,而且不需要重新声明,担心变量的数据消失,
但有一点比较困惑的是,在view中声明的Doc是临时的,而Doc调用 在它里边声明的类对象在Doc消失后,为什么类对象数据
没有消失呢??还可以继续使用里边的数据,可能是类对象只声明一次,而且Doc 在调用的函数完后看似消失,其实一直没有
结束,只是自己看不到??
收获总结:
了解了 树形控件和列表控件,还有分割客户区并且客户区之间的调用,还有当出现分割客户区时,工具栏所放的位置(在MainFrame),最后还大概了解了一下如何调用
系统文件名和图标(Shell技术)。这些是这次学习的收获
不足:花费的时间太长,之前定好的是两天,到后面搞到三天,以后就不以天数定项目了,要以小时定项目,天数太笼统,小时更准确。
总的来说,明确好自己在这个小项目中要学的技术,大概都是处在了解的阶段,毕竟是在Copy技术,但是恰恰是这个才是至关重要,很多技术具体的都记不住,但是要
知道去哪里找到这些技术,项目中需要的技术是什么,这一点更重要,所以这次假期的学习目的就是做到这点,所有的技术都需要过一遍,虽然不会用,但知道是这么回事,
以后需要起来,方向的问题就可以定下来了