📄 splitterview.cpp
字号:
// 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 + -