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

📄 splitterview.cpp

📁 一个可以分割txt和doc的源代码,用C++编的,是一种比较好的东西哦
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// SplitterView.cpp : implementation of the CSplitterView class
//

#include "stdafx.h"
#include "Splitter.h"

#include "SplitterDoc.h"
#include "SplitterView.h"

#define MAXFILECANBESPLIT 0x36CCCCC

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

/////////////////////////////////////////////////////////////////////////////
// CSplitterView

IMPLEMENT_DYNCREATE(CSplitterView, CFormView)

BEGIN_MESSAGE_MAP(CSplitterView, CFormView)
	//{{AFX_MSG_MAP(CSplitterView)
	ON_BN_CLICKED(IDC_BROWSE1, OnBrowse1)
	ON_BN_CLICKED(IDC_BROWSE2, OnBrowse2)
	ON_BN_CLICKED(IDC_SPLIT, OnSplit)
	ON_BN_CLICKED(IDC_INCREASEBUTTON, OnIncreasebutton)
	ON_BN_CLICKED(IDC_DECREASEBUTTON, OnDecreasebutton)
	ON_BN_CLICKED(IDC_SELECTFOLDERREBUILD, OnSelectfolderrebuild)
	ON_BN_CLICKED(IDC_SELECTFOLDERSPLIT, OnSelectfoldersplit)
	ON_BN_CLICKED(IDC_REBUILD, OnRebuild)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSplitterView construction/destruction

CSplitterView::CSplitterView()
	: CFormView(CSplitterView::IDD)
{
	//{{AFX_DATA_INIT(CSplitterView)
	m_RebuildFile = _T("");
	m_SplitFilePath = _T("");
	m_SelectFolderRebuild = _T("");
	m_SelectFolderSplit = _T("");
	m_SplitNum = 0;
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	InitSplitNum();
	//AfxMessageBox("“告诉你一个不好的消息,菜单及工具按钮均不可用。不好意思!:)”",MB_ICONEXCLAMATION|MB_OK);
	//SourcePath=_T("");
}

CSplitterView::~CSplitterView()
{
}

void CSplitterView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSplitterView)
	DDX_Control(pDX, IDC_SPLITNUM, m_SplitNumCtrl);
	DDX_Text(pDX, IDC_REBUILDEDIT, m_RebuildFile);
	DDX_Text(pDX, IDC_SPLITEDIT, m_SplitFilePath);
	DDX_Text(pDX, IDC_SELECTFOLDEREDITREBUILD, m_SelectFolderRebuild);
	DDX_Text(pDX, IDC_SELECTFOLDEREDITSPLIT, m_SelectFolderSplit);
	DDX_Text(pDX, IDC_SPLITNUM, m_SplitNum);
	//}}AFX_DATA_MAP
}

BOOL CSplitterView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CSplitterView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CSplitterView printing

BOOL CSplitterView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CSplitterView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CSplitterView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CSplitterView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CSplitterView diagnostics

#ifdef _DEBUG
void CSplitterView::AssertValid() const
{
	CFormView::AssertValid();
}

void CSplitterView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CSplitterDoc* CSplitterView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSplitterDoc)));
	return (CSplitterDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSplitterView message handlers

void CSplitterView::OnBrowse1() 
{
	// TODO: Add your control notification handler code here
	CFileDialog Dlg1(TRUE,_T("*"),_T("*.*"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("所有类型文件(*.*)|*.*|"));
	if(IDOK==Dlg1.DoModal())
	{
		m_SplitFilePath.Format("%s",Dlg1.GetPathName());
		m_SplitFileName.Format("%s",Dlg1.GetFileName());
		SetDlgItemText(IDC_SPLITEDIT,m_SplitFilePath);
	    bBrowse1Flag=1;
//----------------------------
		CFile f(m_SplitFilePath,CFile::modeRead);
		FSLength=(LONG)f.GetLength();
		AVLength=FSLength/m_SplitNum;
		LSTLength=FSLength-AVLength*(m_SplitNum-1);
		SetDlgItemInt(IDC_AVFILELENGTH,AVLength,FALSE);
		SetDlgItemInt(IDC_LASTFILELENGTH,LSTLength,FALSE);
		f.Close();
	
	}
}

void CSplitterView::OnBrowse2() 
{
	// TODO: Add your control notification handler code here
	CFileDialog Dlg2(TRUE,_T("XXQ"),_T("*.XXQ"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("XXQ类型文件(*.XXQ)|*.XXQ|"));
	if(IDOK==Dlg2.DoModal())
	{
		m_RebuildFilePath.Format("%s",Dlg2.GetPathName());
		m_RebuildFileName.Format("%s",Dlg2.GetFileName());
		SetDlgItemText(IDC_REBUILDEDIT,m_RebuildFilePath);
		bBrowse2Flag=1;
	}
	
}

void CSplitterView::OnSplit() 
{
	// TODO: Add your control notification handler code here
	
	BOOL bUpdate;
	bUpdate=UpdateData(TRUE);
	if(bUpdate)
	{
		if(!GetDlgItemText(IDC_SPLITEDIT,m_SplitFilePath))
		{
			AfxMessageBox("“您没有输入或选定文件名!”",MB_ICONEXCLAMATION|MB_OK);
		}
		else
		{
			m_SplitNum=GetDlgItemInt(IDC_SPLITNUM,NULL,FALSE);
			if(m_SplitNum<2||m_SplitNum>40)
			{	
				AfxMessageBox("“对不起,分割份数只能在2至20之间!太多了也没什么意义!您说对吗?”",MB_ICONEXCLAMATION|MB_OK);
			}
			else
			{

			int nSaveSplitDir;
			nSaveSplitDir=GetDlgItemText(IDC_SELECTFOLDEREDITSPLIT,m_SelectFolderSplit);
			if(!nSaveSplitDir)
			{
				AfxMessageBox("“您没有指定存放文件夹!”",MB_ICONEXCLAMATION|MB_OK);
			}
			else
			{
			char* pBuffer[0x1000];
			CFile SF(m_SplitFilePath,CFile::modeRead);

			if(!bBrowse1Flag)
			{
				m_SplitFileName=SF.GetFileName();
			}
			
			FSLength=(LONG)SF.GetLength();
			AVLength=FSLength/m_SplitNum;
			LSTLength=FSLength-AVLength*(m_SplitNum-1);
			SetDlgItemInt(IDC_AVFILELENGTH,AVLength,FALSE);
			SetDlgItemInt(IDC_LASTFILELENGTH,LSTLength,FALSE);
			
			UINT i;
			UINT nBytesRead;
			UINT nAV=AVLength/(0x1000);//(4*1024);
			UINT nLST=LSTLength/(0x1000);//(4*1024);

			int nStringLen;
			nStringLen=m_SelectFolderSplit.GetLength();

			switch(m_SplitNum)
			{
			case 20:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str20=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X20");
				CFile f20(str20,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f20.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f20.Write(pBuffer,nBytesRead);
				}
				f20.Close();				
				}
				else
				{
				str20=m_SelectFolderSplit+m_SplitFileName+_T(".X20");
				CFile f20(str20,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f20.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f20.Write(pBuffer,nBytesRead);
				}
				f20.Close();				
				}
				
			case 19:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str19=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X19");
				CFile f19(str19,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f19.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f19.Write(pBuffer,nBytesRead);
				}
				f19.Close();				
				}
				else
				{
				str19=m_SelectFolderSplit+m_SplitFileName+_T(".X19");
				CFile f19(str19,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f19.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f19.Write(pBuffer,nBytesRead);
				}
				f19.Close();				
				}



			case 18:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str18=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X18");
				CFile f18(str18,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f18.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f18.Write(pBuffer,nBytesRead);
				}
				f18.Close();				
				}
				else
				{
				str18=m_SelectFolderSplit+m_SplitFileName+_T(".X18");
				CFile f18(str18,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f18.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f18.Write(pBuffer,nBytesRead);
				}
				f18.Close();				
				}



			case 17:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str17=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X17");
				CFile f17(str17,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f17.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f17.Write(pBuffer,nBytesRead);
				}
				f17.Close();				
				}
				else
				{
				str17=m_SelectFolderSplit+m_SplitFileName+_T(".X17");
				CFile f17(str17,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f17.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f17.Write(pBuffer,nBytesRead);
				}
				f17.Close();				
				}



			case 16:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str16=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X16");
				CFile f16(str16,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f16.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f16.Write(pBuffer,nBytesRead);
				}
				f16.Close();			
				}
				else
				{
				str16=m_SelectFolderSplit+m_SplitFileName+_T(".X16");
				CFile f16(str16,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f16.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f16.Write(pBuffer,nBytesRead);
				}
				f16.Close();			
				}



			case 15:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str19=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X15");
				CFile f15(str15,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f15.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f15.Write(pBuffer,nBytesRead);
				}
				f15.Close();				
				}
				else
				{
				str15=m_SelectFolderSplit+m_SplitFileName+_T(".X15");
				CFile f15(str15,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f15.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f15.Write(pBuffer,nBytesRead);
				}
				f15.Close();				
				}



			case 14:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str14=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X14");
				CFile f14(str14,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f14.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f14.Write(pBuffer,nBytesRead);
				}
				f14.Close();				
				}
				else
				{
				str14=m_SelectFolderSplit+m_SplitFileName+_T(".X14");
				CFile f14(str14,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f14.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f14.Write(pBuffer,nBytesRead);
				}
				f14.Close();				
				}



			case 13:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str13=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X13");
				CFile f13(str13,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f13.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f13.Write(pBuffer,nBytesRead);
				}
				f13.Close();				
				}
				else
				{
				str13=m_SelectFolderSplit+m_SplitFileName+_T(".X13");
				CFile f13(str13,CFile::modeCreate|CFile::modeReadWrite);
				for(i=0;i<nAV;i++)
				{
					nBytesRead=SF.Read(pBuffer,0x1000);
					f13.Write(pBuffer,nBytesRead);
				}
				if(nAV*(0x1000)<AVLength)
				{
					nBytesRead=SF.Read(pBuffer,(AVLength-nAV*(0x1000)));
					f13.Write(pBuffer,nBytesRead);
				}
				f13.Close();				
				}



			case 12:
				if(m_SelectFolderSplit.GetAt(nStringLen-1)!='\\')
				{
				str12=m_SelectFolderSplit+_T("\\")+m_SplitFileName+_T(".X12");

⌨️ 快捷键说明

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