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

📄 alterdialog.cpp

📁 BQYAHOO的Visual C++源代码
💻 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 + -