VC6嚮導產生資源管理員介面

來源:互聯網
上載者:User

一、架構產生   

 開啟VC6,建立一個 MFC AppWizard(exe) 工程;

   1  在嚮導第一步中選擇應用程式類型是"單文檔",確保,在"文檔/查看體繫結構支援"檢查框中打上對勾;

   2  在嚮導第二步中根據實際情況選擇是否支援資料庫,我這裡選擇不支援資料庫;

   3  在嚮導第三步中選擇不需要複合文檔支援;也不需要複合檔案支援;

  4  在嚮導第四步中預設即可;

   5 在嚮導第五步中選擇風格是"Windows 資源管理員樣式";

  6  在嚮導第六步中對你的選擇做一下確認,可以看到左邊視圖的基類是CTreeView,應用程式視圖的基類是CListView;

點擊確定即可完成,點擊運行按鈕就可看到效果.

 

二、初始化樹形視圖

     1 修改LeftView.h

        在類的聲明之前包含右視圖的標頭檔,聲明類的保護成員 CGldogView* m_listView以便通過tree事件對右視圖進行通訊;           聲明類的保護成員CImageList ImgTree對樹的表徵圖進行操作;

        #include "usbdogview.h"
        class CLeftView : public CTreeView

     2 開啟LeftView.c   在樹形視圖中添加樹根、樹枝和樹葉;

        void CLeftView::OnInitialUpdate()
{
 CTreeView::OnInitialUpdate();
    ImgTree.Create (16,16,ILC_COLOR|ILC_MASK,3,3);//建立表徵圖列表
 ImgTree.Add (AfxGetApp()->LoadIcon (IDR_MAINFRAME));
 ImgTree.Add (AfxGetApp()->LoadIcon (IDI_dir));

 CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl ();
 CtlTree.SetBkColor (RGB(210,230,190));
 CtlTree.SetImageList (&ImgTree,TVSIL_NORMAL);
 int i=0;
 TV_INSERTSTRUCT tvRoot;//樹根
    TV_INSERTSTRUCT tvSecond;//樹枝
 TV_INSERTSTRUCT tvThree;//樹葉
 tvRoot.hParent=NULL;
 tvRoot.item.pszText="系統管理";
 tvRoot.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
    tvRoot.item.iImage=i;
 tvRoot.item.iSelectedImage=i;
 HTREEITEM item_root=CtlTree.InsertItem (&tvRoot);
 int ii;
 CString strSecond[2]={"2F00","3F00"};
 CString strThree[2][3]={{"0001","0002","0003"},{"001","002"}};
 for(i=0;i<2;i++)
 {
  tvSecond.hParent=item_root;
  tvSecond.item.pszText=(LPTSTR)(LPCTSTR)strSecond[i];
  tvSecond.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
        tvSecond.item.iImage=1;
     tvSecond.item.iSelectedImage=2;
  HTREEITEM item_second=CtlTree.InsertItem (&tvSecond);
  switch(i)
  {
  case 0:
   ii=3;
   break;
        case 1:
   ii=2;
   break;
  default:
   break;

  }
  for(int j=0;j<ii;j++)
  {tvThree.hParent=item_second;
  tvThree.item.pszText=(LPTSTR)(LPCTSTR)strThree[i][j];
  tvThree.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
        tvThree.item.iImage=1;
     tvThree.item.iSelectedImage=2;
     CtlTree.InsertItem (&tvThree);
  }
 }
 //設定列表視圖的風格
 CtlTree.Expand(item_root,TVE_EXPAND);
 DWORD dwStyle=GetWindowLong(CtlTree.m_hWnd ,GWL_STYLE);
 dwStyle|=TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
 ::SetWindowLong (CtlTree.m_hWnd ,GWL_STYLE,dwStyle);
}      

 

三、初始化列表視圖

    開啟應用程式視圖檔案修改OnInitialUpdate()函數如下:

CListView::OnInitialUpdate();
 CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
 listCtrl.ModifyStyle (0,LVS_REPORT);
 listCtrl.ModifyStyle (LVS_EDITLABELS,0);//禁止修改欄位標題
 listCtrl.SetExtendedStyle (LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_INFOTIP|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);
  listCtrl.InsertColumn (0,"檔案ID",LVCFMT_LEFT,50);
 listCtrl.InsertColumn (1,"操作許可權",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (2,"佔用空間(位元組)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (3,"已用空間(位元組)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (4,"空閑空間(位元組)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (5,"建立時間",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (6,"最新動向時間",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (7,"建立者",LVCFMT_LEFT,100);

效果如所示:

 

四、樹視圖與列表視圖的通訊

     1、在右邊的列表視圖中添加處理左視圖資料的公用方法void recievedata(CString strInfo);

     2、recievedata函數的實現

          void CUsbdogView::recievedata(CString strInfo)
{
 CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
 if(strInfo=="0001")
 { listCtrl.DeleteAllItems ();
 listCtrl.InsertItem(0,"0001");
 listCtrl.SetItemText(0,1,"r/w/d");
 listCtrl.SetItemText(0,2,"300");
 listCtrl.SetItemText(0,3,"200");
 listCtrl.SetItemText(0,4,"100");
 listCtrl.SetItemText(0,5,"2008.08.08 010302");
 listCtrl.SetItemText(0,6,"2008.08.09 231105");
 listCtrl.SetItemText(0,7,"jiadelin");
 }
  this->Invalidate (FALSE);
}

     3、在樹視圖中建立訊息映射並調用列表視圖的recievedata方法實現通訊

          

 

4、實現OnSelchanged方法

     void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl ();
    HTREEITEM select_item=CtlTree.GetSelectedItem ();
 CString str=CtlTree.GetItemText (select_item);
 CSplitterWnd* m_wndSplitter=(CSplitterWnd*)GetParent();
    m_listView=(CUsbdogView*)m_wndSplitter->GetPane (0,1);
 m_listView->recievedata(str);
 *pResult = 0;

}

 

全文完.

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.