📄 alterdialog.cpp
字号:
//共享修改对话框,实现追加共享。
#include "stdafx.h"
#include "resource.h"
#include "xmldata.h"
#include <string>
#include <direct.h>
#include <atlsimpstr.h>
#include ".\AlterDialog.h"
#include "stdlib.h"
#include "imapi.h"
extern CXMLDATA XmlData;
using namespace std;
//
LRESULT CAlterDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// center the dialog on the screen
this->CenterWindow ();
GetDlgItem(ID_ALTER_SENDMAIL).EnableWindow (false);
return TRUE;
}
LRESULT CAlterDialog::OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
this->EndDialog (0);
return 0;
}
LRESULT CAlterDialog::OnBnClickedAlterCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加控件通知处理程序代码
this->EndDialog (0);
return 0;
}
LRESULT CAlterDialog::OnBnClickedButtonWhere(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加控件通知处理程序代码
WTL::CFolderDialog fd;
fd.DoModal ();
NowWhere=fd.GetFolderPath ();
GetDlgItem(IDC_STATIC_WHERE).SetWindowText(NowWhere.c_str ());
return 0;
}
LRESULT CAlterDialog::OnBnClickedAlterDescribe(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加控件通知处理程序代码
//分析已有的描述文件
_chdir(NowWhere.c_str ());
if(!HasDescribeFile())
{
GetDlgItem(IDC_STATIC_WHERE).SetWindowText("目前该目录下没有描述文件!");
return 0;
}
MakeOldDes();
DownLoadCode=OldDes.DownLoadCode ;
MailBoxName=OldDes.MailBoxName ;
MakeNewDes();
//
GetDlgItem(IDC_EDIT_MAILBOXNAME).SetWindowText(MailBoxName.c_str ());
GetDlgItem(IDC_EDIT_DOWNLOADCODE).SetWindowText(DownLoadCode.c_str ());
if(AllSame())
{
GetDlgItem(IDC_STATIC_WHERE).SetWindowText("该目录下的共享文件没有任何变化!");
return 0;
}
GetDlgItem(ID_ALTER_SENDMAIL).EnableWindow (true);
return 0;
}
LRESULT CAlterDialog::OnBnClickedAlterSendmail(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加控件通知处理程序代码
this->SendFile ();
this->SendDescribe ();
return 0;
}
bool CAlterDialog::HasDescribeFile()
{
WIN32_FIND_DATA FindData;
HANDLE FindFileHandle=FindFirstFile("DESCRIBE.xml",&FindData);
if(INVALID_HANDLE_VALUE==FindFileHandle) return false;
return true;
}
bool CAlterDialog::MakeNewDes()
{
vector <string> VFileName;
WIN32_FIND_DATA FindData;
//收集目录中的普通文件信息
HANDLE FindFileHandle=FindFirstFile("*",&FindData);
if(INVALID_HANDLE_VALUE==FindFileHandle) return 0;
if(!FindNextFile(FindFileHandle,&FindData)) return 0;
while(FindNextFile(FindFileHandle,&FindData))
{
if(strstr(FindData.cFileName,"DESCRIBE")!=NULL) continue;
if(strstr(FindData.cFileName,".")==NULL) continue;
VFileName.push_back (FindData.cFileName );
}
//生成新的描述信息
int n;
for(n=0;n<int(VFileName.size ());n++)
{
int m=-1;
int i=0;
for(i=0;i<int(OldDes.VFileName .size ());i++)
{
if(VFileName[n]==OldDes.VSaveName [i])
{
m=i;
break;
}
}
if(m!=-1)
{
NewDes.Vdescribe .push_back (VFileName[n]);
NewDes.VFileName .push_back (OldDes.VFileName [m]);
NewDes.VSaveName .push_back (VFileName[n]);
continue;
}
}
for(n=0;n<int(VFileName.size ());n++)
{
int m=-1;
int i=0;
for(i=0;i<int(NewDes.VFileName .size ());i++)
{
if(VFileName[n]==OldDes.VSaveName [i])
{
m=i;
break;
}
}
if(m!=-1) continue;
int x=0;
for(x=0;x<int(VFileName.size ());x++)
{
int j=0;
string FileName;
FileName=DownLoadCode+".part";
char index[5];
memset(index,0,5);
::itoa (x,index,10);
FileName.append (index);
if(CheckPart (FileName)==false) continue;
NewDes.VFileName .push_back (FileName);
NewDes.Vdescribe .push_back (VFileName[n]);
NewDes.VSaveName .push_back (VFileName[n]);
break;
}
}
NewDes.MailBoxName =MailBoxName;
NewDes.DownLoadCode =DownLoadCode;
NewDes.DescrbeForUser="欢迎下载!" ;
NewDes.WriteData (NowWhere+"\\"+"DESCRIBE.xml");//此时共享目录下的描述文件已经被改写
return true;
}
bool CAlterDialog::MakeOldDes()
{
OldDes.ReadData ();
return true;
}
bool CAlterDialog::AllSame()//检查是否没有任何变化
{
if(NewDes.VFileName .size ()!=OldDes.VFileName .size ()) return false;
bool samen=true;
int n;
int m;
for(n=0;n<int(NewDes.VSaveName .size ());n++)
{
bool samem=false;
for(m=0;m<int(OldDes.VSaveName .size ());m++)
{
if(NewDes.VSaveName[n]==OldDes.VSaveName [m])
{
samem=true;
break;
}
}
if(!samem) samen=false;
}
return samen;
}
void CAlterDialog::SendFile()//发送共享文件
{
int n;
int m;
for(n=0;n<int(NewDes.VSaveName .size ());n++)
{
bool samem=false;
for(m=0;m<int(OldDes.VSaveName .size ());m++)
{
if(NewDes.VSaveName[n]==OldDes.VSaveName [m])
{
samem=true;
break;
}
}
if(!samem)
{
//
CIMapi mail;
if (mail.Error() == CIMapi::IMAPI_SUCCESS)
{
mail.To (MailBoxName.c_str ());
mail.From ("BQYAHOO@BQYAHOO.COM");
mail.Attach ((NowWhere+"\\"+NewDes.VSaveName [n]).c_str ());
mail.Subject (NewDes.VFileName [n].c_str ());
mail.Send ();
}
}
}
}
void CAlterDialog::SendDescribe()//发送描述文件
{
CIMapi mail;
mail.To (MailBoxName.c_str ());
mail.From ("BQYAHOO@BQYAHOO.COM");
mail.Attach ((NowWhere+"\\"+"DESCRIBE.xml").c_str ());
mail.Subject((DownLoadCode+".describe").c_str());
mail.Send ();
}
bool CAlterDialog::CheckPart(string part)
{
int n=0;
bool m=true;
for(n=0;n<int(NewDes.VFileName .size ());n++)
{
if(part==NewDes.VFileName [n])
{
m=false;
break;
}
}
return m;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -