⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filemanage.cpp

📁 VC环境下电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// FileManage.cpp : implementation file
//

#include "stdafx.h"
#include "wgl_32.h"
#include "FileManage.h"
#include "tty.h"

#include "recorder.h"
#include "Dialing.h"
#include "Trans.h"

#include <stdio.h>
#include <io.h>
#include <time.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BOOL ReadDog(void);
CTTY MyTTY;
extern CDialing MMyDialing;
extern CTrans MyTrans;
/////////////////////////////////////////////////////////////////////////////
// CFileManage dialog


CFileManage::CFileManage(CWnd* pParent /*=NULL*/)
	: CDialog(CFileManage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFileManage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_wReturn = -1;
}


void CFileManage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFileManage)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFileManage, CDialog)
	//{{AFX_MSG_MAP(CFileManage)
	ON_NOTIFY(NM_DBLCLK, IDC_CITYTREE, OnDblclkCitytree)
	ON_NOTIFY(NM_DBLCLK, IDC_FILETREE, OnDblclkFiletree)
	ON_NOTIFY(NM_DBLCLK, IDC_RECORDTREE, OnDblclkRecordtree)
	ON_NOTIFY(NM_DBLCLK, IDC_STATIONTREE, OnDblclkStationtree)
	ON_WM_PAINT()
	ON_NOTIFY(TVN_SELCHANGED, IDC_FILETREE, OnSelchangedFiletree)
	ON_BN_CLICKED(IDC_COMM, OnComm)
	ON_BN_CLICKED(IDC_SHOW, OnShow)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFileManage message handlers

BOOL CFileManage::OnInitDialog() 
{
	int i=0;
	long HFile;
	struct _finddata_t c_file;    

    HTREEITEM HRoot;
	TV_INSERTSTRUCT TVInsterStruct;
	TV_ITEM  TVItem;
	
    CString RootString;

	CDialog::OnInitDialog();
    // TODO: Add extra initialization here

    if (!RootString.LoadString( IDS_ROOTSTRING ))
       { 
         AfxMessageBox("Error Loading String: IDS_ROOTSTRING") ; 
         RootString =  _T("广东省电管局");
       }
    
	GetDlgItem(IDC_SELECTION)->GetWindowRect(&m_SelectRect);
	ScreenToClient(&m_SelectRect);

	m_Directory = ((CWgl_32App *)AfxGetApp())->m_PathStr;
    
	TVInsterStruct.hParent = TVI_ROOT;
	TVInsterStruct.hInsertAfter = TVI_FIRST;

	memset(&TVItem, 0x00, sizeof(TV_ITEM));
	TVItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_CHILDREN;
    TVItem.pszText = (char *)LPCTSTR(RootString);
	
	TVItem.cchTextMax = RootString.GetLength();
	TVItem.cChildren = 1;
	TVItem.lParam = 1L;

	TVInsterStruct.item = TVItem;
	
	HRoot = ((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->InsertItem((LPTV_INSERTSTRUCT FAR )&TVInsterStruct);
    HFile = _findfirst( m_Directory+"*.*", &c_file ) ;
	if(HFile==-1)return TRUE;
	while(i==0)
	{
     if(lstrcmp(c_file.name, ".")!=0 && lstrcmp(c_file.name, "..")!=0  && c_file.attrib == _A_SUBDIR)
	 {
	  TVInsterStruct.hParent = HRoot;
	  TVInsterStruct.hInsertAfter = TVI_SORT;
  	  
      memset(&TVItem, 0x00, sizeof(TV_ITEM));
	  TVItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_CHILDREN;
	  TVItem.pszText = c_file.name;
	  TVItem.cchTextMax = lstrlen(c_file.name);
	  TVItem.cChildren = 0;
	  TVItem.lParam = 1L;

	  TVInsterStruct.item = TVItem;

	  ((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->InsertItem(&TVInsterStruct);
	 }
	 i = _findnext( HFile, &c_file ) ;
	}
 ((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->Expand(HRoot, TVE_EXPAND);
	 
 return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFileManage::OnDblclkCitytree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
    int i=0;
	long HFile;
	struct _finddata_t c_file;    
	HTREEITEM SelectedItem;
			
	HTREEITEM HRoot;
	TV_INSERTSTRUCT TVInsterStruct;
	TV_ITEM  TVItem;
	
	SelectedItem = ((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->GetSelectedItem();

    if(((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->ItemHasChildren( SelectedItem ))
	   {*pResult = 0; return; }
	m_CityName = ((CTreeCtrl *)GetDlgItem(IDC_CITYTREE))->GetItemText(SelectedItem);

	NowDirectory = m_Directory + m_CityName + "\\*.*";
	HFile = _findfirst( NowDirectory, &c_file ) ;
     
	HRoot =  ((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->GetRootItem();
	((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->Expand(HRoot,TVE_COLLAPSE);
    ((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->DeleteAllItems();

	HRoot =  ((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->GetRootItem();
	((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->Expand(HRoot,TVE_COLLAPSE);
    ((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->DeleteAllItems();	

	HRoot =  ((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->GetRootItem();
	((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->Expand(HRoot,TVE_COLLAPSE);
	((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->DeleteAllItems();

	((CButton *)GetDlgItem(IDOK))->EnableWindow(FALSE);
    ((CButton *)GetDlgItem(IDC_COMM))->EnableWindow(FALSE);
	((CButton *)GetDlgItem(IDC_SHOW))->EnableWindow(FALSE);		

	memset(&TVItem, 0x00, sizeof(TV_ITEM));
	TVItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_CHILDREN;
	TVItem.pszText = m_CityName.GetBuffer(lstrlen(m_CityName));
    TVItem.cchTextMax = lstrlen(m_CityName);
	TVItem.cChildren = 1;
	TVItem.lParam = 1L;

	TVInsterStruct.hParent = TVI_ROOT;
	TVInsterStruct.hInsertAfter = TVI_FIRST;
	TVInsterStruct.item = TVItem;

	HRoot = ((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->InsertItem(&TVInsterStruct);
	m_CityName.ReleaseBuffer();

	InvalidateRect(&m_SelectRect);
	UpdateWindow();

	if(HFile==-1)return ;
	while(i==0)
	{
     if(lstrcmp(c_file.name, ".")!=0 && lstrcmp(c_file.name, "..")!=0 && c_file.attrib == _A_SUBDIR)
	 {
	 TVInsterStruct.hParent = HRoot;
	 TVInsterStruct.hInsertAfter = TVI_SORT;

	 memset(&TVItem, 0x00, sizeof(TV_ITEM));
	 TVItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_CHILDREN;
	 TVItem.pszText = c_file.name;
	 TVItem.cchTextMax = lstrlen(c_file.name);
	 TVItem.cChildren = 0;
	 TVItem.lParam = 1L;

	 TVInsterStruct.item = TVItem;

	 ((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->InsertItem(&TVInsterStruct);
	 }
	 i = _findnext( HFile, &c_file ) ;
	}
   ((CTreeCtrl *)GetDlgItem(IDC_STATIONTREE))->Expand(HRoot, TVE_EXPAND);

	*pResult = 0;
}

void CFileManage::OnDblclkFiletree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	//文件树上双击
    
	HTREEITEM SelectedItem;
    
	((CButton *)GetDlgItem(IDOK))->EnableWindow(FALSE);
    ((CButton *)GetDlgItem(IDC_COMM))->EnableWindow(FALSE);

	SelectedItem = ((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->GetSelectedItem();
    if(((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->ItemHasChildren( SelectedItem ))
	   { *pResult = 0; return; }
	
	
	((CButton *)GetDlgItem(IDOK))->EnableWindow(TRUE);
		
	m_FileName = ((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->GetItemText(SelectedItem);
	NowDirectory = m_Directory + m_CityName + "\\" + m_StationName + "\\" + m_strRecordID + "\\"+ m_FileName;
    
	InvalidateRect(&m_SelectRect);
	UpdateWindow();
    *pResult = 0;
	m_wReturn = 1;
    CDialog::OnOK();  //效果同双击
}

void CFileManage::OnDblclkRecordtree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	//在录波器树上双击
    int i=0;
	long HFile;
	struct _finddata_t c_file;    
	HTREEITEM SelectedItem;
			
	HTREEITEM HRoot;
	TV_INSERTSTRUCT TVInsterStruct;
	TV_ITEM  TVItem;

	((CButton *)GetDlgItem(IDC_COMM))->EnableWindow(FALSE);
	((CButton *)GetDlgItem(IDOK))->EnableWindow(FALSE);
	((CButton *)GetDlgItem(IDC_SHOW))->EnableWindow(FALSE);		

	SelectedItem = ((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->GetSelectedItem();

    if(((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->ItemHasChildren( SelectedItem ))
	   {*pResult = 0; return; }
	m_strRecordID = ((CTreeCtrl *)GetDlgItem(IDC_RECORDTREE))->GetItemText(SelectedItem);
	NowDirectory = m_Directory + m_CityName + "\\" + m_StationName + "\\" + m_strRecordID + "\\*.wgl";
    HFile = _findfirst( NowDirectory, &c_file ) ;

	HRoot =  ((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->GetRootItem();
	((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->Expand(HRoot,TVE_COLLAPSE);
	((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->DeleteAllItems();
		
    ((CButton *)GetDlgItem(IDC_COMM))->EnableWindow(TRUE);
	
	memset(&TVItem, 0x00, sizeof(TV_ITEM));
	TVItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_CHILDREN;
	TVItem.pszText = m_strRecordID.GetBuffer(lstrlen(m_strRecordID));
    TVItem.cchTextMax = lstrlen(m_strRecordID);
	TVItem.cChildren = 1;
	TVItem.lParam = 1L;

	TVInsterStruct.hParent = TVI_ROOT;
	TVInsterStruct.hInsertAfter = TVI_FIRST;
	TVInsterStruct.item = TVItem;

	HRoot = ((CTreeCtrl *)GetDlgItem(IDC_FILETREE))->InsertItem(&TVInsterStruct);
	m_strRecordID.ReleaseBuffer();
    
	InvalidateRect(&m_SelectRect);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -