📄 mymovetodlg.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 + -