1 界面分为左右两个部分,左侧为树控件。右侧为日志内容。
2 日志内容来源于指定目录下的TXT文件。其文件名形如log年-月-日-时-分-秒(例log2004-09-20-10-18-32.txt).
3 要求左侧树按年月日分类组织日志信息。用户点击对应的文件则在右侧显示日志内容。
4 日志文件一行内容对应一项日志信息,日志信息前部为事件发生时间,其后为事件描述,中间用:分隔。
5 为了方便用户查看日志,要求提供以下功能,可以按时间升降排序,只显示指定时间段内的内容,通过关键字查询对应日志。
6 模块为独立运行的exe程序。

解决方案 »

  1.   

    才10分就要流程和源码啊?少了点哦。1、MFC提供单文档Windows Explorer风格(左侧CTreeView右侧CListView),界面很容易实现(多加一个Internet Explorer ReBars作为以后的查询用)。
    2、用API函数FindFirstFile、FindNextFile实现对指定目录下日志文件的查找。
    3、找到的所有日志文件按照时间排序后插入到左边的属性列表中。
    4、捕获列表树中的OnClick事件,得到用户选择的文件名后用CStdioFile类打开,并读出所有日志到内存(注意将时间和描述解析后保存在内存中)插入到右边的CListView中。
    5、数据已经在内存中了,排序就看你自己的了。想用什么方法就用什么!关键字查找同样(使用ReBars作为关键字输入)
    6、Debug无误后直接Release就是你要的exe了。手痛~~~~~
      

  2.   

    自己写了,现在的问题时用MFC做文件读写操作时遇到了一点麻烦,能给出代码就谢了散分。对话框初始化的核心代码如下:
    root=m_ctrTree.InsertItem("日志查看"); 
    HTREEITEM year_child=m_ctrTree.InsertItem("2004",root);
    char *month[12]={"一月","二月","三月","四月","五月","六月",
     "七月","八月","九月","十月","十一月","十二月"};
    HTREEITEM month_child;
    char *day[31]={"1日","2日","3日","4日","5日","6日",
    "7日","8日","9日","10日","11日","12日",
    "13日","14日","15日","16日","17日","18日",
    "19日","20日","21日","22日","23日","24日",
    "25日","26日","27日","28日","29日","30日",
    "31日"};
    for(int i=0;i<12;i++)
    {
    month_child=m_ctrTree.InsertItem(month[i],year_child);
    if(strcmp(month[i],"一月")==0||strcmp(month[i],"三月")==0||
    strcmp(month[i],"五月")==0||strcmp(month[i],"七月")==0||
    strcmp(month[i],"八月")==0||strcmp(month[i],"十月")==0||
    strcmp(month[i],"十二月")==0)
    {
    for(int j=0;j<31;j++)
    {
    HTREEITEM day_child=m_ctrTree.InsertItem(day[j],month_child);
    }
    }
    else if(strcmp(month[i],"四月")==0||strcmp(month[i],"六月")==0||
    strcmp(month[i],"九月")==0||strcmp(month[i],"十一月")==0)
    {
    for(int j=0;j<30;j++)
    {
    HTREEITEM day_child=m_ctrTree.InsertItem(day[j],month_child);
    }
    }
    else if(strcmp(month[i],"二月")==0)
    {
    if((year%400==0)||(year%100!=0&&year%4==0))
    {
    for(int j=0;j<29;j++)
    HTREEITEM day_child=m_ctrTree.InsertItem(day[j],month_child);
    }
    else
    {
    for(int j=0;j<28;j++)
    HTREEITEM day_child=m_ctrTree.InsertItem(day[j],month_child);
    }
    }
    }
    GetDlgItem(IDC_EDIT)->SetWindowText("这里是日志内容-->");
    树型控件的TVN_SELECTCHANGED消息映射函数:
    void CLogViewDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    }
    这个函数中如何实现用户点击树型控件的叶子节点时显示指定的内容呢!要传个什么样的参数给他
      

  3.   

    查查MSDN中关于CTreeCtrl类中你很容易发现HTREEITEM hItem = pmyTreeCtrl->GetSelectedItem();此时hItem就是用户选中的节点句柄,然后再调用CString GetItemText( HTREEITEM hItem );就可以确定点中的项目名字,如果选中的是月份节点就将整月的日志读出来显示,如果选中的是日子节点就需要调用HTREEITEM GetParentItem( HTREEITEM hItem );取得月份名称,月份和日子都确定了读出数据还有困难?不是这里的老大们不帮你写,实在是这个应用较简单,你自己多查查MSDN就能轻松的解决。