dlgbackuprestore.c
来自「文件驱动加密,功能强大,可产生加密分区,支持AES,MD2,MD4,MD5MD2」· C语言 代码 · 共 576 行 · 第 1/2 页
C
576 行
volFilesize.QuadPart)
{
MsgError(hDlg, TEXT("Volume file too small to contain CDB"));
retval = FALSE;
}
}
}
G_dlgBackupRestore_Params.ParamsOK = retval;
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgBackupRestore_ValidateInput\n")));
return G_dlgBackupRestore_Params.ParamsOK;
}
// =========================================================================
BOOL CALLBACK dlgBackupRestore_HandleMsg_WM_COMMAND(HWND hDlg, WPARAM wParam)
{
BOOL retval = FALSE;
int ctrlID;
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgBackupRestore_HandleMsg_WM_COMMAND\n")));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Command: %d\n"), LOWORD(wParam)));
ctrlID = LOWORD(wParam);
switch(ctrlID)
{
case IDOK:
{
BOOL allOK;
if (dlgBackupRestore_ValidateInput(hDlg))
{
if (G_dlgBackupRestore_DlgMode == DLGMODE_BACKUPRESTORE_BACKUP)
{
allOK = driver_BackupCDB(
G_dlgBackupRestore_Params.SrcFilename,
G_dlgBackupRestore_Params.SrcOffset,
G_dlgBackupRestore_Params.DestFilename
);
}
else
{
allOK = driver_RestoreCDB(
G_dlgBackupRestore_Params.SrcFilename,
G_dlgBackupRestore_Params.DestFilename,
G_dlgBackupRestore_Params.DestOffset
);
}
if (allOK)
{
if (G_dlgBackupRestore_DlgMode == DLGMODE_BACKUPRESTORE_BACKUP)
{
MsgInfo(hDlg, TEXT("Backup successful."));
}
else
{
MsgInfo(hDlg, TEXT("Restore successful."));
}
EndDialog(hDlg, TRUE);
}
else
{
MsgError(hDlg, TEXT("Operation failed."));
}
}
retval = TRUE;
break;
}
case IDCANCEL:
{
EndDialog(hDlg, TRUE);
retval = TRUE;
break;
}
case IDC_BUTTON_BROWSESRCFILE:
case IDC_BUTTON_BROWSEDESTFILE:
{
OPENFILENAME ofn;
DWORD flags;
WCHAR filename[FREEOTFE_MAX_FILENAME_LENGTH];
BOOL fileDlgOK;
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Browse...\n")));
memset(filename, 0, sizeof(filename));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hDlg;
ofn.hInstance = NULL;
ofn.lpstrCustomFilter = NULL;
ofn.lpstrFile = filename;
ofn.nMaxFile = (sizeof(filename) / sizeof(filename[0]));
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
flags = (
// OFN_HIDEREADONLY |
OFN_FILEMUSTEXIST |
OFN_PATHMUSTEXIST
);
ofn.Flags = flags;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = NULL;
ofn.lCustData = 0;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
if (
(
(ctrlID == IDC_BUTTON_BROWSESRCFILE) &&
(G_dlgBackupRestore_DlgMode == DLGMODE_BACKUPRESTORE_RESTORE)
) ||
(
(ctrlID == IDC_BUTTON_BROWSEDESTFILE) &&
(G_dlgBackupRestore_DlgMode == DLGMODE_BACKUPRESTORE_BACKUP)
)
)
{
ofn.lpstrFilter = FILE_FILTER_FLT_CDBBACKUPS;
ofn.nMaxCustFilter = FILE_FILTER_CNT_CDBBACKUPS;
ofn.nFilterIndex = FILE_FILTER_DFLT_CDBBACKUPS;
}
else
{
ofn.lpstrFilter = FILE_FILTER_FLT_VOLUMESANDKEYFILES;
ofn.nMaxCustFilter = FILE_FILTER_CNT_VOLUMESANDKEYFILES;
ofn.nFilterIndex = FILE_FILTER_DFLT_VOLUMESANDKEYFILES;
}
if (
(ctrlID == IDC_BUTTON_BROWSEDESTFILE) &&
(G_dlgBackupRestore_DlgMode == DLGMODE_BACKUPRESTORE_BACKUP)
)
{
fileDlgOK = GetSaveFileName(&ofn);
}
else
{
fileDlgOK = GetOpenFileName(&ofn);
}
if (fileDlgOK)
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Open file dialog OK'd...\n")));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Filename: %ls\n"), filename));
if (ctrlID == IDC_BUTTON_BROWSESRCFILE)
{
SetDlgItemText(hDlg, IDC_EDIT_SRCFILENAME, filename);
}
else
{
SetDlgItemText(hDlg, IDC_EDIT_DESTFILENAME, filename);
}
}
else
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Open file dialog cancelled\n")));
}
break;
}
}
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgBackupRestore_HandleMsg_WM_COMMAND\n")));
return retval;
}
// =========================================================================
BOOL CALLBACK dlgBackupRestore_HandleMsg_WM_NOTIFY(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
BOOL retval = FALSE;
int idCtrl;
NMHDR* notifHdr;
NMUPDOWN* lpnmud;
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgBackupRestore_HandleMsg_WM_NOTIFY\n")));
idCtrl = (int)wParam;
notifHdr = (NMHDR*)lParam;
switch (notifHdr->code)
{
// Spin edit up/down button
case UDN_DELTAPOS:
{
switch(idCtrl)
{
case IDC_SPIN_SRCOFFSET:
{
lpnmud = (NMUPDOWN*)lParam;
AdjustSpinControl(
hDlg,
IDC_EDIT_SRCOFFSET,
0,
INT_MAX,
-(lpnmud->iDelta)
);
retval = TRUE;
break;
}
case IDC_SPIN_DESTOFFSET:
{
lpnmud = (NMUPDOWN*)lParam;
AdjustSpinControl(
hDlg,
IDC_EDIT_DESTOFFSET,
0,
INT_MAX,
-(lpnmud->iDelta)
);
retval = TRUE;
break;
}
}
break;
}
}
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgBackupRestore_HandleMsg_WM_NOTIFY\n")));
return TRUE;
}
// =========================================================================
BOOL CALLBACK dlgBackupRestore_Proc(
HWND hDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam
)
{
BOOL retval = FALSE;
switch(msg)
{
case WM_NOTIFY:
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_NOTIFY\n")));
retval = dlgBackupRestore_HandleMsg_WM_NOTIFY(hDlg, wParam, lParam);
break;
}
case WM_INITDIALOG:
{
retval = dlgBackupRestore_HandleMsg_WM_INITDIALOG(hDlg);
break;
}
case WM_CLOSE:
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_CLOSE\n")));
retval = dlgBackupRestore_HandleMsg_WM_CLOSE(hDlg);
break;
}
case WM_COMMAND:
{
retval = dlgBackupRestore_HandleMsg_WM_COMMAND(hDlg, wParam);
break;
}
}
return retval;
}
// =========================================================================
// =========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?