📄 tcformat.c
字号:
hKeySalt = GetDlgItem (hwndDlg, IDC_KEY_SALT);
SendMessage (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
SendMessage (GetDlgItem (hwndDlg, IDC_DISK_KEY), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
SendMessage (GetDlgItem (hwndDlg, IDC_KEY_SALT), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_FORMAT_TITLE));
EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), bDevice);
SendMessage (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), CB_RESETCONTENT, 0, 0);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "Default", 0);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "0.5 KB", 1);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "1 KB", 2);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "2 KB", 4);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "4 KB", 8);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "8 KB", 16);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "16 KB", 32);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "32 KB", 64);
AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "64 KB", 128);
SendMessage (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), CB_SETCURSEL, 0, 0);
EnableWindow (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_CANCEL_BAR), FALSE);
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_FINISH));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
SetFocus (GetDlgItem (GetParent (hwndDlg), IDC_NEXT));
}
break;
}
return 0;
case WM_HELP:
OpenPageHelp (GetParent (hwndDlg), nCurPageNo);
return 1;
case WM_COMMAND:
if (lw == IDC_CANCEL_BAR && nCurPageNo == FORMAT_PAGE)
{
if (MessageBox (hwndDlg, getstr (IDS_FORMAT_ABORT), lpszTitle, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 ) == IDYES)
bThreadCancel = TRUE;
return 1;
}
if (lw == IDC_CIPHER_TEST && nCurPageNo == CIPHER_PAGE)
{
LPARAM nIndex;
nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
nVolCipher = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
DialogBoxParam (hInst, MAKEINTRESOURCE (IDD_CIPHER_TEST_DLG),
GetParent (hwndDlg), (DLGPROC) CipherTestDialogProc, (LPARAM)nVolCipher );
return 1;
}
if (hw == CBN_EDITCHANGE && nCurPageNo == FILE_PAGE)
{
int j = GetWindowTextLength (GetDlgItem (hCurPage, IDC_COMBO_BOX));
if (j > 0)
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
else
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
return 1;
}
if (hw == CBN_SELCHANGE && nCurPageNo == FILE_PAGE)
{
LPARAM nIndex;
nIndex = MoveEditToCombo ((HWND) lParam);
nIndex = UpdateComboOrder (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
if (nIndex != CB_ERR)
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
else
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
return 1;
}
if (hw == EN_CHANGE && nCurPageNo == SIZE_PAGE)
{
VerifySizeAndUpdate (hwndDlg, FALSE);
return 1;
}
if (hw == EN_CHANGE && nCurPageNo == PASSWORD_PAGE)
{
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
GetDlgItem (hwndDlg, IDC_PASSWORD),
GetDlgItem (hwndDlg, IDC_VERIFY),
NULL, NULL);
return 1;
}
if ((lw == IDC_KB || lw == IDC_MB) && nCurPageNo == SIZE_PAGE)
{
VerifySizeAndUpdate (hwndDlg, FALSE);
return 1;
}
if (lw == IDC_BROWSE_FILES && nCurPageNo == FILE_PAGE)
{
if (BrowseFiles (hwndDlg, IDS_OPEN_TITLE, szFileName) == FALSE)
return 1;
AddComboItem (GetDlgItem (hwndDlg, IDC_COMBO_BOX), szFileName);
EnableDisableFileNext (GetDlgItem (hwndDlg, IDC_COMBO_BOX),
GetDlgItem (GetParent (hwndDlg), IDC_NEXT));
return 1;
}
if (lw == IDC_BROWSE_DEVICES && nCurPageNo == FILE_PAGE)
{
int nResult = DialogBoxParam (hInst,
MAKEINTRESOURCE (IDD_RAWDEVICES_DLG), GetParent (hwndDlg),
(DLGPROC) RawDevicesDlgProc, (LPARAM) & szFileName[0]);
if (nResult == IDOK)
{
AddComboItem (GetDlgItem (hwndDlg, IDC_COMBO_BOX), szFileName);
EnableDisableFileNext (GetDlgItem (hwndDlg, IDC_COMBO_BOX),
GetDlgItem (GetParent (hwndDlg), IDC_NEXT));
}
return 1;
}
if (hw == CBN_SELCHANGE && nCurPageNo == CIPHER_PAGE)
{
ComboSelChangeCipher (hwndDlg);
return 1;
}
if (lw == IDC_QUICKFORMAT && IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT)))
{
MessageBox (hwndDlg, getstr (IDS_WARN_QUICK_FORMAT), lpszTitle, MB_OK | MB_ICONEXCLAMATION);
return 1;
}
return 0;
}
return 0;
}
/* Except in response to the WM_INITDIALOG message, the dialog box procedure
should return nonzero if it processes the message, and zero if it does
not. - see DialogProc */
BOOL CALLBACK
MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
WORD lw = LOWORD (wParam);
if (lParam); /* Remove unused parameter warning */
switch (uMsg)
{
case WM_INITDIALOG:
{
/* Call the common dialog init code */
InitDialog (hwndDlg);
LoadSettings (hwndDlg);
SendMessage (GetDlgItem (hwndDlg, IDC_BOX_TITLE), WM_SETFONT, (WPARAM) hTitleFont, (LPARAM) TRUE);
SetWindowText (hwndDlg, lpszTitle);
ExtractCommandLine (hwndDlg, (char *) lParam);
LoadPage (hwndDlg, FILE_PAGE);
}
return 0;
case WM_SYSCOMMAND:
if (lw == IDC_ABOUT)
{
DialogBox (hInst, MAKEINTRESOURCE (IDD_ABOUT_DLG), hwndDlg, (DLGPROC) AboutDlgProc);
return 1;
}
return 0;
case WM_TIMER:
{
char tmp[21];
char tmp2[43];
int i;
RandpeekBytes (tmp, sizeof (tmp));
tmp2[0] = 0;
for (i = 0; i < sizeof (tmp); i++)
{
char tmp3[8];
sprintf (tmp3, "%02X", (int) (unsigned char) tmp[i]);
strcat (tmp2, tmp3);
}
tmp2[42] = 0;
SetWindowText (GetDlgItem (hCurPage, IDC_RANDOM_BYTES), tmp2);
return 1;
}
case WM_FORMAT_FINISHED:
EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDHELP), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), TRUE);
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), bDevice);
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), TRUE);
EnableWindow (GetDlgItem (hCurPage, IDC_CANCEL_BAR), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_NEXT), TRUE);
SendMessage (GetDlgItem (hCurPage, IDC_PROGRESS_BAR), PBM_SETPOS, 0, 0L);
SetFocus (GetDlgItem (hwndDlg, IDC_NEXT));
if (nCurPageNo == FORMAT_PAGE)
KillTimer (hwndDlg, 0xff);
LoadPage (hwndDlg, 0);
break;
case WM_THREAD_ENDED:
EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDHELP), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), TRUE);
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), bDevice);
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), TRUE);
EnableWindow (GetDlgItem (hCurPage, IDC_CANCEL_BAR), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_NEXT), TRUE);
SendMessage (GetDlgItem (hCurPage, IDC_PROGRESS_BAR), PBM_SETPOS, 0, 0L);
SetFocus (GetDlgItem (hwndDlg, IDC_NEXT));
return 1;
case WM_HELP:
OpenPageHelp (hwndDlg, nCurPageNo);
return 1;
case WM_COMMAND:
if (lw == IDHELP)
{
OpenPageHelp (hwndDlg, nCurPageNo);
return 1;
}
if (lw == IDCANCEL)
{
EndMainDlg (hwndDlg);
return 1;
}
if (lw == IDC_NEXT)
{
if (nCurPageNo == FILE_PAGE)
{
GetWindowText (GetDlgItem (hCurPage, IDC_COMBO_BOX), szFileName, sizeof (szFileName));
CreateFullVolumePath (szDiskFile, szFileName, &bDevice);
MoveEditToCombo (GetDlgItem (hCurPage, IDC_COMBO_BOX));
bHistory = !IsButtonChecked (GetDlgItem (hCurPage, IDC_NO_HISTORY));
SaveSettings (hCurPage);
}
if (nCurPageNo == CIPHER_PAGE)
{
LPARAM nIndex;
nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
nVolCipher = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_SHA1))) pkcs5 = SHA1;
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_RIPEMD160))) pkcs5 = RIPEMD160;
}
if (nCurPageNo == SIZE_PAGE)
VerifySizeAndUpdate (hCurPage, TRUE);
if (nCurPageNo == PASSWORD_PAGE)
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (hwndDlg, IDC_NEXT),
GetDlgItem (hCurPage, IDC_PASSWORD),
GetDlgItem (hCurPage, IDC_VERIFY),
szPassword, szVerify);
// Format start
if (nCurPageNo == FORMAT_PAGE)
{
if (bThreadRunning == TRUE)
return 1;
else
bThreadRunning = TRUE;
bThreadCancel = FALSE;
EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_NEXT), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDHELP), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_CANCEL_BAR), TRUE);
SetFocus (GetDlgItem (hCurPage, IDC_CANCEL_BAR));
quickFormat = IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT));
_beginthread (formatThreadFunction, 4096, hwndDlg);
return 1;
}
if (nCurPageNo == SIZE_PAGE && nVolCipher == NONE)
LoadPage (hwndDlg, nCurPageNo + 2);
else
LoadPage (hwndDlg, nCurPageNo + 1);
return 1;
}
if (lw == IDC_PREV)
{
if (nCurPageNo == FILE_PAGE)
{
GetWindowText (GetDlgItem (hCurPage, IDC_COMBO_BOX), szFileName, sizeof (szFileName));
CreateFullVolumePath (szDiskFile, szFileName, &bDevice);
MoveEditToCombo (GetDlgItem (hCurPage, IDC_COMBO_BOX));
SaveSettings (hCurPage);
}
if (nCurPageNo == CIPHER_PAGE)
{
LPARAM nIndex;
nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
nVolCipher = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_SHA1))) pkcs5 = SHA1;
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_RIPEMD160))) pkcs5 = RIPEMD160;
}
if (nCurPageNo == SIZE_PAGE)
VerifySizeAndUpdate (hCurPage, TRUE);
if (nCurPageNo == PASSWORD_PAGE)
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (hwndDlg, IDC_NEXT),
GetDlgItem (hCurPage, IDC_PASSWORD),
GetDlgItem (hCurPage, IDC_VERIFY),
szPassword, szVerify);
if (nCurPageNo == FORMAT_PAGE)
KillTimer (hwndDlg, 0xff);
if (nCurPageNo == FORMAT_PAGE && nVolCipher == NONE)
LoadPage (hwndDlg, nCurPageNo - 2);
else
LoadPage (hwndDlg, nCurPageNo - 1);
return 1;
}
return 0;
case WM_CLOSE:
EndMainDlg (hwndDlg);
return 1;
}
return 0;
}
void
ExtractCommandLine (HWND hwndDlg, char *lpszCommandLine)
{
char **lpszCommandLineArgs; /* Array of command line arguments */
int nNoCommandLineArgs; /* The number of arguments in the array */
/* Extract command line arguments */
nNoCommandLineArgs = Win32CommandLine (lpszCommandLine, &lpszCommandLineArgs);
if (nNoCommandLineArgs > 0)
{
int i;
for (i = 0; i < nNoCommandLineArgs; i++)
{
argument args[]=
{
{"/history", "/h"},
{"/help", "/?"}
};
argumentspec as;
int nArgPos;
int x;
as.args = args;
as.arg_cnt = sizeof(args)/ sizeof(args[0]);
x = GetArgumentID (&as, lpszCommandLineArgs[i], &nArgPos);
switch (x)
{
case 'h':
{
char szTmp[8];
GetArgumentValue (lpszCommandLineArgs, nArgPos, &i, nNoCommandLineArgs,
szTmp, sizeof (szTmp));
if (!_stricmp(szTmp,"y") || !_stricmp(szTmp,"yes"))
{
bHistory = TRUE;
bHistoryCmdLine = TRUE;
}
if (!_stricmp(szTmp,"n") || !_stricmp(szTmp,"no"))
{
bHistory = FALSE;
bHistoryCmdLine = TRUE;
}
}
break;
case '?':
default:
DialogBoxParam (hInst, MAKEINTRESOURCE (IDD_COMMANDHELP_DLG), hwndDlg, (DLGPROC)
CommandHelpDlgProc, (LPARAM) &as);
exit(0);
}
}
}
/* Free up the command line arguments */
while (--nNoCommandLineArgs >= 0)
{
free (lpszCommandLineArgs[nNoCommandLineArgs]);
}
}
int WINAPI
WINMAIN (HINSTANCE hInstance, HINSTANCE hPrevInstance,
char *lpszCommandLine, int nCmdShow)
{
int status;
if (hPrevInstance && lpszCommandLine && nCmdShow); /* Remove unused
parameter warning */
InitCommonControls ();
nPbar = IDC_PROGRESS_BAR;
if (Randinit ())
AbortProcess (IDS_INIT_RAND);
RegisterRedTick(hInstance);
atexit (localcleanup);
/* Allocate, dup, then store away the application title */
lpszTitle = err_strdup (getstr (IDS_TITLE));
InitApp (hInstance);
status = DriverAttach ();
if (status != 0)
{
if (status == ERR_OS_ERROR)
handleWin32Error (NULL);
else
handleError (NULL, status);
AbortProcess (IDS_NODRIVER);
}
/* Create the main dialog box */
DialogBoxParam (hInstance, MAKEINTRESOURCE (IDD_MKFS_DLG), NULL, (DLGPROC) MainDialogProc,
(LPARAM)lpszCommandLine);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -