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

📄 new.cpp

📁 这是我自己写的wince程序
💻 CPP
字号:
// New.cpp : implementation file
//

#include "stdafx.h"
#include "WinCEJob.h"
#include "New.h"
#include "wincejobdlg.h"
#include "rtext.h"
#include "inireader.h"
#include "search.h"
#include "movefile.h"
#include "rename.h"
#include "folder.h"
#include "fileloader.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CNew dialog

extern int m_global;
CNew::CNew(CWnd* pParent /*=NULL*/)
	: CDialog(CNew::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNew)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}
CNew::CNew(CWinCEJobDlg *m)
{
	m_wince = m;
}

void CNew::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNew)
	DDX_Control(pDX, IDC_LIST1, m_listctrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNew, CDialog)
	//{{AFX_MSG_MAP(CNew)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_COMMAND(ID_DELETE, OnDelete)
	ON_COMMAND(ID_RENAME, OnRename)
	ON_COMMAND(ID_INFORMATION, OnInformation)
	ON_COMMAND(ID_FAVORITE1, OnFavorite1)
	ON_COMMAND(ID_MENUITEM32788, OnMenuitem32788)
	ON_COMMAND(ID_MENUITEM32795, OnMenuitem32795)
	ON_COMMAND(ID_MENUITEM32796, OnMenuitem32796)
	ON_COMMAND(ID_EXIT1, OnExit1)
	ON_COMMAND(ID_SEARCH, OnSearch)
	ON_COMMAND(ID_MOVEFILE, OnMovefile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNew message handlers

BOOL CNew::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_listctrl.SetBkColor(COLORREF(RGB(251,251,249)));
	m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);//|LVS_EX_GRIDLINES);
	//设置表头格式为Account/Name/Date
	m_listctrl.SetHeadings(_T(",20;选项,60"));
	//宽度设置
	m_listctrl.SetColumnWidth(0,20);
	m_listctrl.SetColumnWidth(1,150);

    SHMENUBARINFO mbi;
    ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
    mbi.cbSize = sizeof(SHMENUBARINFO);
    mbi.hwndParent = this->m_hWnd;
    mbi.nToolBarId = IDR_MENUBAR2;
    mbi.hInstRes = AfxGetInstanceHandle();
    if(!SHCreateMenuBar(&mbi))
    {
        // Couldn't create the menu bar.  Fail creation of the window.
        MessageBox(L"Couldn't create the menu bar");
    }
	m_close = 1;
	m_showtype = 1;
	ShowFile("", 0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//****************************************************************
//函数名:	ShowFile(CString str, int m_i)
//参数:	str:文件夹		m_i用于区别是往下打开子目录还是返回	
//功能:	实现资源管理、文件管理
//作者:	杨淑华
//实现日期: 05-3-14
/****************************************************************/
void CNew::ShowFile(CString str, int m_i)
{
	
	CString total;
	if(str == L"")
	{
		switch(m_global)
		{
		case 0:
			m_file = L"Windows\\WinCEReader\\WinCEReader";
			m_showtype = 0;
			break;
		case 1:
			m_file = L"Windows\\WinCEReader\\Update";
			m_showtype = 0;
			break;
		case 2:
			m_file = L"Windows\\WinCEReader\\Sort";
			m_showtype = 0;
			break;
		case 3:
			m_file = L"My Documents";
			break;
		case 4:
			m_file = L"";
			break;
		default:
			break;
		}
	}
	if(str == L"")
	{
		if(m_file == L"")
		{
			total = L"*";
		}
		else
			total.Format(L"\\%s\\%s", m_file, L"*");
	}
	else
	{
		if(str == m_rtn && m_i == 1)
		{
			if(m_file == L"")
			{
				total = L"*";
			}
			else
				total.Format(L"\\%s\\%s", m_file, L"*");
		}
		else
		{
			m_rtn = str;
			if(m_file == L"")
			{
				total = str;
			}
			else
			{
				total.Format(L"%s\\%s", m_file, str);
			}
			m_file = total;
			total.Format(L"\\%s\\%s", m_file, L"*");
		}
	}
	WIN32_FIND_DATA wfd;
	int items = 1;
	TCHAR listItem[2];
	_itow(items, listItem, 10);
	HANDLE hand = FindFirstFile(total, &wfd);
	if(hand == INVALID_HANDLE_VALUE )
	{
		CString lpFile;
		lpFile = total.Left(total.GetLength() - 2);

		SHELLEXECUTEINFO ShellInfo; 
		memset(&ShellInfo, 0, sizeof(ShellInfo)); 
		ShellInfo.cbSize= sizeof(ShellInfo);
		ShellInfo.hwnd= this->m_hWnd;         
		ShellInfo.lpVerb= _T("open"); 
		ShellInfo.lpFile= lpFile;//_T("\\MoneyAnyWhere.exe"); 
		ShellInfo.nShow= SW_SHOWNORMAL; 
		ShellInfo.fMask= SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
		
		if(::ShellExecuteEx(&ShellInfo) == 0)
		{
		//	MessageBox(L"不是可执行文件!");
		}
		if(m_listctrl.DeleteAllItems() == 0)
		{
			MessageBox(L"sorry,delete item failed!");
			return;
		}
		return ;
	}

	if(m_listctrl.DeleteAllItems() == 0)
	{
		MessageBox(L"sorry,delete item failed!");
		return;
	}

	if(m_showtype == 0)
	{
		m_listctrl.AddItem(listItem, wfd.cFileName);
		items++;
	}
	else if(m_showtype == 1 && wfd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
	{
		m_listctrl.AddItem(listItem, wfd.cFileName);
		items++;
	}
	while(FindNextFile(hand, &wfd))
	{
		if(m_showtype == 0)
		{
			_itow(items, listItem, 10);
			items++;
			m_listctrl.AddItem(listItem,wfd.cFileName);
		}
		else if(m_showtype == 1 && wfd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
		{
			_itow(items, listItem, 10);
			items++;
			m_listctrl.AddItem(listItem,wfd.cFileName);
		}
	}
	CloseHandle(hand);
}
//****************************************************************
//函数名:	OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
//参数:	
//功能:	双击List项时,实现打开子目录
//作者:	杨淑华
//实现日期: 05-3-14
/****************************************************************/
void CNew::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	int nItem;
	POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
	if (pos == NULL)
	   TRACE0("No items were selected!\n");
	else
	{
	  while (pos)
	  {
		 nItem = m_listctrl.GetNextSelectedItem(pos);
	  }
	}
	CString str = m_listctrl.GetItemText(nItem, 1);

	CIniReader Reader(str);
	Reader.Probe();

	if(str.Right(3)!=L"txt" && str.Right(3) !=L"ini"&& str.Right(3) !=L"INI" && str.Right(3) !=L"EXE" && str.Right(3) !=L"exe" && str.Right(3) !=L"PBD" && str.Right(3) !=L"pbd")
	{
		Reader.m_fileattr = 1;
	}
	if(Reader.m_fileattr == 0)
	{
//		m_close--;
		if(Reader.Load() == 1)
		{
			if(str.Right(3) ==L"PBD" || str.Right(3) ==L"pbd")
			{
				FileLoader fl(str);
				
				CRText ct;
				ct.m_openfile = str;
				ct.m_filetext = fl.m_filecotent;
				for(int k=0; k<fl.m_charpternum; k++)
				{
					ct.m_chapternum = fl.m_charpternum;
					ct.m_chapterline[k] = fl.m_chapterline[k];
				}
				ct.DoModal();
			}
			else
			{
				CRText ct;
				ct.m_openfile = str;
				ct.m_filetext = Reader.m_Buffer;
				
				ct.DoModal();
			}
		}
		else
		{
			MessageBox(L"指定文件不可读!");
		}
		return ;
	}
	m_close++;
	ShowFile(str, 0);
	*pResult = 0;
}

void CNew::OnOK() 
{
	CDialog::OnOK();
}

void CNew::OnButton1() 
{
	m_file.GetLength();
	m_file = m_file.Left(m_file.GetLength() - m_rtn.GetLength()-1);
	m_close--;
	if(m_close == 0)
		CDialog::OnOK();
	ShowFile(m_rtn, 1);
/*
	CRText ct;
	ct.DoModal();*/
}

void CNew::OnDelete() 
{
	if(CheckSelect())
	{
		int nItem;
		POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
		if (pos == NULL)
		   TRACE0("No items were selected!\n");
		else
		{
		  while (pos)
		  {
			 nItem = m_listctrl.GetNextSelectedItem(pos);
		  }
		}
		CString str = m_listctrl.GetItemText(nItem, 1);

		CString delfile;
		if(m_file == L"")
		{
			delfile.Format(L"\\%s", str);
		}
		else
		{
			delfile.Format(L"\\%s\\%s", m_file, str);
		}

		if(DeleteFile(delfile))
		{
			MessageBox(L"delete successed!!");
		}
		else
		{
			MessageBox(L"delete failed!!");
		}
	}
	else
		MessageBox(L"请选择操作项!");
}

void CNew::OnRename() 
{
	if(CheckSelect())
	{
		int nItem;
		POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
		if (pos == NULL)
		   TRACE0("No items were selected!\n");
		else
		{
		  while (pos)
		  {
			 nItem = m_listctrl.GetNextSelectedItem(pos);
		  }
		}
		CString str = m_listctrl.GetItemText(nItem, 1);
	
		CRename cr;
		cr.m_folder = m_file;
		cr.m_filename = str;
		cr.DoModal();
	}
	else
		MessageBox(L"请选择操作项!");
}

void CNew::OnInformation() 
{
	if(CheckSelect())
	{
	}
	else
		MessageBox(L"请选择操作项!");
}

void CNew::OnFavorite1() 
{
	if(CheckSelect())
	{
		int nItem;
		POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
		if (pos == NULL)
		   TRACE0("No items were selected!\n");
		else
		{
		  while (pos)
		  {
			 nItem = m_listctrl.GetNextSelectedItem(pos);
		  }
		}
		CString str = m_listctrl.GetItemText(nItem, 1);

		CMoveFile mf;
		mf.m_folder = this->m_file;
		mf.m_filename = str;
		mf.DoModal();
	}
	else
		MessageBox(L"请选择操作项!");
}

void CNew::OnMenuitem32788() 
{
	if(CheckSelect())
	{
	}
	else
		MessageBox(L"请选择操作项!");
}
//****************************************************************
//函数名:	CheckSelect
//参数:	
//功能:	检查是否选了项
//作者:	杨淑华
//实现日期: 05-3-14
/****************************************************************/
BOOL CNew::CheckSelect()
{
	int nItem = -1;
	POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
	if (pos == NULL)
	   TRACE0("No items were selected!\n");
	else
	{
	  while (pos)
	  {
		 nItem = m_listctrl.GetNextSelectedItem(pos);
	  }
	}
	if(nItem == -1)
	{
		return false;
	}
	return true;
}

void CNew::OnMenuitem32795() 
{
	m_showtype = 1;
	//ID_MENUITEM32795
	//IDR_MENUBAR2
//	CheckMenuItem(tGetSafeHmenu(),ID_MENUITEM32795, 1);
//	CheckMenuItem(ID_MENUITEM32796, 0);
	ShowFile(L"", 0);
}

void CNew::OnMenuitem32796() 
{
	m_showtype = 0;
//	CheckMenuItem(ID_MENUITEM32795, 0);
//	CheckMenuItem(ID_MENUITEM32796, 1);
	ShowFile(L"", 0);
}

void CNew::OnExit1() 
{
	CDialog::OnOK();	
}

void CNew::OnSearch() 
{
	CSearch csearch;
	csearch.DoModal();
}
extern CString movefilename;
void CNew::OnMovefile() 
{
	if(CheckSelect())
	{
		int nItem;
		POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
		if (pos == NULL)
		   TRACE0("No items were selected!\n");
		else
		{
		  while (pos)
		  {
			 nItem = m_listctrl.GetNextSelectedItem(pos);
		  }
		}
		CString str = m_listctrl.GetItemText(nItem, 1);

		CFolder cf;
		cf.DoModal();
		CString oldfile;
		if(m_file == L"")
		{
			oldfile.Format(L"\\%s", str);
		}
		else
		{
			oldfile.Format(L"\\%s\\%s", m_file, str);
		}

		MoveFile(oldfile, movefilename);
	}
	else
		MessageBox(L"请选择操作项!");
}

⌨️ 快捷键说明

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