📄 tcformat.c
字号:
return 1;
}
if (lw == IDC_STD_VOL && nCurPageNo == INTRO_PAGE)
{
bHiddenVol = FALSE;
bHiddenVolHost = FALSE;
bHiddenVolDirect = FALSE;
return 1;
}
if (lw == IDC_HIDVOL_WIZ_MODE_DIRECT && nCurPageNo == HIDDEN_VOL_WIZARD_MODE_PAGE)
{
bHiddenVolDirect = TRUE;
return 1;
}
if (lw == IDC_HIDVOL_WIZ_MODE_FULL && nCurPageNo == HIDDEN_VOL_WIZARD_MODE_PAGE)
{
bHiddenVolDirect = FALSE;
return 1;
}
if (lw == IDC_BROWSE_FILES && nCurPageNo == FILE_PAGE)
{
if (BrowseFiles (hwndDlg, IDS_OPEN_TITLE, szFileName, bHistory) == 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]);
// Check administrator privileges
if (!strstr (szFileName, "Floppy") && !IsAdmin())
MessageBox (hwndDlg, getstr (IDS_ADMIN_PRIVILEGES_WARN_DEVICES), lpszTitle, MB_OK|MB_ICONWARNING);
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)
{
ComboSelChangeEA (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;
}
if (lw == IDC_SHOW_KEYS)
{
showKeys = IsButtonChecked (GetDlgItem (hCurPage, IDC_SHOW_KEYS));
SetWindowText (GetDlgItem (hCurPage, IDC_RANDOM_BYTES), showKeys ? "" : "****************************");
SetWindowText (GetDlgItem (hCurPage, IDC_HEADER_KEY), showKeys ? "" : "****************************");
SetWindowText (GetDlgItem (hCurPage, IDC_DISK_KEY), showKeys ? "" : "****************************");
return 1;
}
if (lw == IDC_NO_HISTORY)
{
bHistory = !IsButtonChecked (GetDlgItem (hCurPage, IDC_NO_HISTORY));
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, INTRO_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;
if (!showKeys) return 1;
SendMessage (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
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 && (!bHiddenVol));
EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), TRUE);
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, FORMAT_FINISHED_PAGE);
break;
case WM_THREAD_ENDED:
if (!bHiddenVolHost)
{
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), bDevice && (!bHiddenVol));
EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), TRUE);
}
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDHELP), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), 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)
{
if (hiddenVolHostDriveNo > -1)
UnmountVolume (hwndDlg, hiddenVolHostDriveNo, FALSE);
EndMainDlg (hwndDlg);
return 1;
}
if (lw == IDC_NEXT)
{
if (nCurPageNo == INTRO_PAGE)
{
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_HIDDEN_VOL)) == TRUE)
{
if (!IsAdmin()
&& IDNO == MessageBox (hwndDlg, getstr (IDS_ADMIN_PRIVILEGES_WARN_HIDVOL),
lpszTitle, MB_ICONWARNING|MB_YESNO|MB_DEFBUTTON2))
{
nCurPageNo--;
}
else
{
bHiddenVol = TRUE;
bHiddenVolHost = TRUE;
}
}
else
{
bHiddenVol = FALSE;
bHiddenVolHost = FALSE;
bHiddenVolDirect = FALSE;
nCurPageNo++; // Skip the hidden volume creation wizard mode selection
}
}
else if (nCurPageNo == HIDDEN_VOL_WIZARD_MODE_PAGE)
{
if (IsButtonChecked (GetDlgItem (hCurPage, IDC_HIDVOL_WIZ_MODE_DIRECT)) == TRUE)
bHiddenVolDirect = TRUE;
else
bHiddenVolDirect = FALSE;
}
else 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 (bHiddenVolDirect && bHiddenVolHost)
{
nCurPageNo = HIDVOL_HOST_PASSWORD_PAGE - 1;
if (bDevice)
{
if(!QueryFreeSpace (hwndDlg, GetDlgItem (hwndDlg, IDC_SPACE_LEFT), FALSE))
{
MessageBox (hwndDlg, "Error: Cannot get volume size!\n\nMake sure the selected volume exists and is not being\nused by the system or an application.", lpszTitle, ICON_HAND);
nCurPageNo = FILE_PAGE - 1;
}
else
nHiddenVolHostSize = nVolumeSize;
}
else
{
if (!GetFileVolSize (hwndDlg, &nHiddenVolHostSize))
{
nCurPageNo = FILE_PAGE - 1;
}
}
}
else
{
if (!bHiddenVol)
nCurPageNo = HIDDEN_VOL_PRE_CIPHER_PAGE; // Skip the extra info on hidden volume
else if (!bHiddenVolHost)
nCurPageNo = HIDDEN_VOL_HOST_PRE_CIPHER_PAGE; // Skip the info on the outer volume
}
}
else if (nCurPageNo == HIDDEN_VOL_HOST_PRE_CIPHER_PAGE)
{
if (bHiddenVolHost)
nCurPageNo = HIDDEN_VOL_PRE_CIPHER_PAGE; // Skip the info on the hiddem volume
}
else if (nCurPageNo == CIPHER_PAGE)
{
LPARAM nIndex;
nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
nVolumeEA = 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;
RandSetHashFunction (pkcs5);
}
else if (nCurPageNo == SIZE_PAGE)
{
VerifySizeAndUpdate (hCurPage, TRUE);
if (!(bHiddenVolDirect && bHiddenVolHost))
nCurPageNo++;
}
else if (nCurPageNo == PASSWORD_PAGE)
{
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (hwndDlg, IDC_NEXT),
GetDlgItem (hCurPage, IDC_PASSWORD),
GetDlgItem (hCurPage, IDC_VERIFY),
szPassword, szVerify);
// Check password length
if (!bHiddenVolHost && !CheckPasswordLength (hwndDlg, GetDlgItem (hCurPage, IDC_PASSWORD)))
nCurPageNo--;
}
else if (nCurPageNo == HIDVOL_HOST_PASSWORD_PAGE)
{
int retCode;
GetWindowText (GetDlgItem (hCurPage, IDC_PASSWORD_DIRECT), szPassword, sizeof (szPassword));
/* Mount the volume which is to host the new hidden volume */
if (hiddenVolHostDriveNo < 0) // If the hidden volume host is not mounted yet
retCode = MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, szPassword);
else
retCode = 0; // Mounted
switch (retCode)
{
case ERR_NO_FREE_DRIVES:
MessageBox (hwndDlg, "Error: No free drive letter for the outer volume!", lpszTitle, ICON_HAND);
nCurPageNo--;
break;
case ERR_VOL_MOUNT_FAILED:
NormalCursor ();
nCurPageNo--;
break;
case 0:
/* Hidden volume host successfully mounted */
ArrowWaitCursor ();
// Verify that the outer volume contains a suitable file system and retrieve cluster size
switch (AnalyzeHiddenVolumeHost (hwndDlg, &hiddenVolHostDriveNo, &realClusterSize))
{
case -1:
hiddenVolHostDriveNo = -1;
AbortProcessSilent ();
break;
case 0:
NormalCursor ();
nCurPageNo--;
break;
case 1:
// Determine the maximum possible size of the hidden volume
if (DetermineMaxHiddenVolSize (hwndDlg) < 1)
{
// Non-fatal error while determining maximum possible size of the hidden volume
nCurPageNo--;
NormalCursor();
}
else
{
// Maximum possible size of the hidden volume successfully determined
nCurPageNo = HIDDEN_VOL_PRE_CIPHER_PAGE - 1;
bHiddenVolHost = FALSE;
bHiddenVolFinished = FALSE;
// Clear the outer volume password
memset(&szPassword[0], 0, sizeof (szPassword));
memset(&szVerify[0], 0, sizeof (szVerify));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
NormalCursor ();
nCurPageNo = HIDDEN_VOL_PRE_CIPHER_PAGE - 1;
}
break;
}
}
}
// Format start
else 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_FILESYS), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_CANCEL_BAR), TRUE);
SetFocus (GetDlgItem (hCurPage, IDC_CANCEL_BAR));
if (bHiddenVolHost)
{
hiddenVolHostDriveNo = -1;
nMaximumHiddenVolSize = 0;
quickFormat = FALSE;
}
else if (bHiddenVol)
quickFormat = TRUE;
else
quickFormat = IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT));
if (bHiddenVolHost)
fileSystem = FILESYS_FAT;
else
{
fileSystem = SendMessage (GetDlgItem (hCurPage, IDC_FILESYS), CB_GETITEMDATA
,SendMessage (GetDlgItem (hCurPage, IDC_FILESYS), CB_GETCURSEL, 0, 0) , 0);
}
cluster
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -