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

📄 mymovetodlg.cpp

📁 文件管理系统
💻 CPP
字号:
// fileName: myMoveToDlg.cpp
// by:       zhnyong@21cn.com

// "移动文件”模式对话框的程序文件,主要为对话框过程

// 包括头文件
#include "myFileManagement.h"

// 引用外部文件定义的全局程序实例
extern  HINSTANCE   hInst;

// 定义全局消息ID号与对话框窗口消息处理过程指针查找表
const  dlgMessageProc  movetoDlgMessages[] = 
{
	WM_COMMAND, goCommandMoveToDlg,
};

// 定义控件ID号与命令处理过程指针查找表
const  dlgCommandProc  movetoDlgCommands[] =
{
	IDC_INPUTSOURCEFILE,  goInputsourcefileMoveToDlgCmd,
	IDC_INPUTTARGETDIR,   goInputtargetdirMoveToDlgCmd,
	IDC_MOVETO,           goMovetoMoveToDlgCmd,
	IDC_EXITDLG,          goExitdlgMoveToDlgCmd,
};

// “移动文件”对话框窗口过程体,用于该对话框窗口的消息处理,被系统直接调用
BOOL  CALLBACK   movetoDlgProc(HWND hWnd, UINT  msgCode, WPARAM  wParam, LPARAM  lParam)
{
	INT  i;

	// 查找对应的消息ID号,并执行相应的消息处理过程,并返回TRUE
	for(i=0;i<dim(movetoDlgMessages);i++)
	{
		if(msgCode==movetoDlgMessages[i].uCode )
			return (*movetoDlgMessages[i].functionName )(hWnd,msgCode,wParam,lParam);
	}
	// 对于不在消息查找表中的消息,对话框过程返回FALSE
	return  FALSE;
}

// “移动文件”对话框窗口收到WM_COMMAND消息后的处理过程体
BOOL  goCommandMoveToDlg(HWND hWnd, UINT  msgCode, WPARAM  wParam, LPARAM  lParam)
{
	// 定义字变量控件ID号和通知号
	WORD  controlID, notifyCode;
	// 定义控件句柄
	HWND  wndCtrl;
	int i;
	// 从消息参数中提取控件ID号、通知码和发出消息控件句柄
	controlID = (WORD)LOWORD(wParam);
	notifyCode = (WORD)HIWORD(wParam);
	wndCtrl = (HWND)lParam;

	// 从命令消息与处理过程查找表中找对应的消息处理过程
	for(i=0;i<dim(movetoDlgCommands);i++)
	{
		if(controlID == movetoDlgCommands[i].uCode )
			return (*movetoDlgCommands[i].functionName )(hWnd,wndCtrl,controlID,notifyCode);
	}
	// 不在消息查找表中时,返回0
	return 0;
}

// “移动文件”对话框中点击控件“源文件”时的命令处理过程体
BOOL  goInputsourcefileMoveToDlgCmd(HWND hWnd, HWND wndCtrl, WORD controlID, WORD  notifyCode)
{
	// 定义打开文件名结构体、文件名及文件过滤特性
	OPENFILENAME   of;
	TCHAR   strFileName[MAX_PATH]={0};
	const   LPTSTR  strOpenFilter = TEXT("Text Files(*.txt) \0  *.txt \0 All Documents(*.*)  \0 *.* \0\0");
	BOOL    res;
	
	// 初始化文件名
	strFileName[0]='\0';
	//strName[0]='\0';
	// 初始化打开文件名结构体
	memset(&of, 0, sizeof(of));
	of.lStructSize = sizeof(of);
	of.hwndOwner = hWnd;
	of.lpstrFile = strFileName;
	of.nMaxFile = dim(strFileName);
	of.lpstrFilter = strOpenFilter;
	of.Flags = 0;

	// 打开文件
	res = GetOpenFileName(&of);
	// 如果打开成功,则把文件名显示在具有只读特性的编辑文本框中
	if(res)
	{
		lstrcpy(strFileName, of.lpstrFile);
		SetDlgItemText(hWnd,IDC_SOURCEFILENAME,strFileName);
	}
	// 刷新并显示其拥有者窗口,即主窗口mainWnd,而不是子窗口fileChildWnd
	ShowWindow(GetWindow(hWnd,GW_OWNER),SW_SHOW);
	UpdateWindow(GetWindow(hWnd,GW_OWNER));
	
	// 刷新并显示其本身,即对话框
	ShowWindow(hWnd,SW_SHOW);
	UpdateWindow(hWnd);

	return TRUE;
}
// “移动文件”对话框中点击控件“目标路径”时的命令处理过程体
BOOL  goInputtargetdirMoveToDlgCmd(HWND hWnd, HWND wndCtrl, WORD controlID, WORD  notifyCode)
{
	// 定义打开文件名结构体、文件名及文件过滤特性
	OPENFILENAME   of;
	TCHAR   strFileName[MAX_PATH]={0};
	const   LPTSTR  strOpenFilter = TEXT("Text Files(*.txt) \0  *.txt \0 All Documents(*.*)  \0 *.* \0\0");
	TCHAR   strDirName[MAX_PATH]={0};
	BOOL    res;
	
	// 初始化文件名和路径名
	strFileName[0]='\0';
	strDirName[0]='\0';
	//strName[0]='\0';
	// 初始化打开文件名结构体
	memset(&of, 0, sizeof(of));
	of.lStructSize = sizeof(of);
	of.hwndOwner = hWnd;
	of.lpstrFile = strFileName;
	of.nMaxFile = dim(strFileName);
	of.lpstrFilter = strOpenFilter;
	of.lpstrInitialDir = strDirName;
	of.Flags = 0;

	// 打开文件
	res = GetOpenFileName(&of);
	// 如果打开成功,则把文件名所在路径显示在具有只读特性的编辑文本框中
	if(res)
	{
		lstrcpy(strFileName, of.lpstrFile);
		(wcsrchr(strFileName,'\\'))[1]='\0';
		lstrcat(strDirName,strFileName);
		SetDlgItemText(hWnd,IDC_TARGETDIRNAME,strDirName);
	}
	// 刷新并显示其拥有者窗口,即主窗口mainWnd,而不是子窗口fileChildWnd
	ShowWindow(GetWindow(hWnd,GW_OWNER),SW_SHOW);
	UpdateWindow(GetWindow(hWnd,GW_OWNER));
	
	// 刷新并显示其本身,即对话框
	ShowWindow(hWnd,SW_SHOW);
	UpdateWindow(hWnd);
	
	return TRUE;
}
// “移动文件”对话框中点击控件“复制”时的命令处理过程体
BOOL  goMovetoMoveToDlgCmd(HWND hWnd, HWND wndCtrl, WORD controlID, WORD  notifyCode)
{
	// 定义移动的源文件和目标文件
	TCHAR   srcFileName[MAX_PATH],dstFileName[MAX_PATH];
	TCHAR   strName[32];
	int i;
	// 获得源文件名
	GetDlgItemText(hWnd,IDC_SOURCEFILENAME,srcFileName,MAX_PATH);
	// 获得目标文件名,二部分组成:选择的文件所有路径+输入的文件名
	GetDlgItemText(hWnd,IDC_TARGETDIRNAME,dstFileName,MAX_PATH);
	GetDlgItemText(hWnd,IDC_TARGETFILENAME,strName,32);
	if(lstrlen(strName)>0)  // 输入了文件名
	{
		lstrcat(dstFileName,strName);
		i=MoveFile(srcFileName,dstFileName);
		if(i)
		{
			MessageBox(hWnd,TEXT("移动文件工作完成!"),TEXT("移动"),MB_OK | MB_ICONINFORMATION);
		}
		else
		{
			MessageBox(hWnd,TEXT("移动文件失败!"),TEXT("移动"),MB_OK | MB_ICONWARNING);
		}
	}
	else
	{
		MessageBox(hWnd,TEXT("请输入文件名!"),TEXT("警告"),MB_OK | MB_ICONWARNING);
	}
	return TRUE;
}
// “移动文件”对话框中点击控件“退出”时的命令处理过程体
BOOL  goExitdlgMoveToDlgCmd(HWND hWnd, HWND wndCtrl, WORD controlID, WORD  notifyCode)
{
	int i;
	i=MessageBox(hWnd,TEXT("关闭“移动文件”对话吗?"),TEXT("关闭"),MB_YESNO | MB_ICONINFORMATION);
	if(i==IDNO)
		return 0;
	// 调用EndDialog关闭对话框
	EndDialog(hWnd,0);
	return TRUE;
}

⌨️ 快捷键说明

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