📄 tcformat.c
字号:
rD.left = 162;
rD.top = 25;
rD.right = 0;
rD.bottom = 0;
MapDialogRect (hwndDlg, &rD);
if (hCurPage != NULL)
{
MoveWindow (hCurPage, rD.left, rD.top, rW.right - rW.left, rW.bottom - rW.top, TRUE);
ShowWindow (hCurPage, SW_SHOWNORMAL);
}
}
/* 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 WINAPI
VolstatsDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
WORD lw = LOWORD (wParam);
switch (msg)
{
case WM_INITDIALOG:
SetDefaultUserFont (hwndDlg);
SetWindowText (GetDlgItem (hwndDlg, IDC_STATS_BOX), (char *) lParam);
return 1;
case WM_COMMAND:
if (lw == IDOK)
{
EndDialog (hwndDlg, 0);
return 1;
}
return 0;
}
return 0;
}
int
PrintFreeSpace (HWND hwndTextBox, char *lpszDrive, PLARGE_INTEGER lDiskFree)
{
UINT nResourceString;
int nMultiplier;
char szTmp2[256];
if (lDiskFree->QuadPart < BYTES_PER_KB)
nMultiplier = 1;
else if (lDiskFree->QuadPart < BYTES_PER_MB)
nMultiplier = BYTES_PER_KB;
else
nMultiplier = BYTES_PER_MB;
if (nMultiplier == 1)
if (bDevice == TRUE)
nResourceString = IDS_DEVICE_FREE_BYTES;
else
nResourceString = IDS_DISK_FREE_BYTES;
else if (nMultiplier == 1024)
if (bDevice == TRUE)
nResourceString = IDS_DEVICE_FREE_KB;
else
nResourceString = IDS_DISK_FREE_KB;
else if (bDevice == TRUE)
nResourceString = IDS_DEVICE_FREE_MB;
else
nResourceString = IDS_DISK_FREE_MB;
sprintf (szTmp2, getstr (nResourceString), lpszDrive, ((double) lDiskFree->QuadPart) / nMultiplier);
SetWindowText (hwndTextBox, szTmp2);
if (lDiskFree->QuadPart % (__int64) BYTES_PER_MB != 0)
nMultiplier = BYTES_PER_KB;
return nMultiplier == 1 ? nMultiplier : nMultiplier;
}
void
DisplaySizingErrorText (HWND hwndTextBox)
{
char szTmp[256];
if (nCurrentOS == WIN_NT)
{
if (translateWin32Error (szTmp, sizeof (szTmp)) == TRUE)
{
char szTmp2[256];
sprintf (szTmp2, "%s\n%s", getstr (IDS_CANNOT_CALC_SPACE), szTmp);
SetWindowText (hwndTextBox, szTmp2);
}
else
{
SetWindowText (hwndTextBox, "");
}
}
else
{
SetWindowText (hwndTextBox, getstr (IDS_CANNOT_CALC_SPACE));
}
}
void
EnableDisableFileNext (HWND hComboBox, HWND hMainButton)
{
LPARAM nIndex = SendMessage (hComboBox, CB_GETCURSEL, 0, 0);
if (nIndex == CB_ERR)
{
EnableWindow (hMainButton, FALSE);
SetFocus (hComboBox);
}
else
{
EnableWindow (hMainButton, TRUE);
SetFocus (hMainButton);
}
}
BOOL
QueryFreeSpace (HWND hwndDlg, HWND hwndTextBox)
{
if (bDevice == FALSE)
{
char szTmp[TC_MAX_PATH];
ULARGE_INTEGER free;
BOOL bResult;
bResult = GetDiskFreeSpaceEx (MakeRootName (szTmp, szFileName), &free, 0, 0);
if (bResult == FALSE)
{
DisplaySizingErrorText (hwndTextBox);
return FALSE;
}
else
{
LARGE_INTEGER lDiskFree;
lDiskFree.QuadPart = free.QuadPart;
PrintFreeSpace (hwndTextBox, szTmp, &lDiskFree);
return TRUE;
}
}
else if (nCurrentOS == WIN_NT)
{
char szDosDevice[TC_MAX_PATH], szCFDevice[TC_MAX_PATH];
int nDosLinkCreated;
HANDLE dev;
nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice,
szCFDevice, FALSE);
if (nDosLinkCreated != 0)
{
DisplaySizingErrorText (hwndTextBox);
return FALSE;
}
dev = CreateFile (szCFDevice, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (dev == INVALID_HANDLE_VALUE)
{
int nStatus;
DisplaySizingErrorText (hwndTextBox);
nStatus = RemoveFakeDosName (szDiskFile, szDosDevice);
if (nStatus != 0)
handleWin32Error (hwndDlg);
return FALSE;
}
else
{
DISK_GEOMETRY driveInfo;
DWORD dwResult;
int nStatus;
BOOL bResult;
nStatus = RemoveFakeDosName (szDiskFile, szDosDevice);
if (nStatus != 0)
handleWin32Error (hwndDlg);
bResult = DeviceIoControl (dev, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0,
&driveInfo, sizeof (driveInfo), &dwResult, NULL);
if (driveInfo.MediaType == FixedMedia)
{
PARTITION_INFORMATION diskInfo;
bResult = DeviceIoControl (dev, IOCTL_DISK_GET_PARTITION_INFO, NULL, 0,
&diskInfo, sizeof (diskInfo), &dwResult, NULL);
if (bResult == TRUE)
{
nMultiplier = PrintFreeSpace (hwndTextBox, szDiskFile, &diskInfo.PartitionLength);
nFileSize = diskInfo.PartitionLength.QuadPart / nMultiplier;
if (nFileSize == 0)
{
SetWindowText (hwndTextBox, getstr (IDS_EXT_PARTITION));
CloseHandle (dev);
return FALSE;
}
}
else
{
DisplaySizingErrorText (hwndTextBox);
CloseHandle (dev);
return FALSE;
}
}
else if (bResult == TRUE)
{
LARGE_INTEGER lDiskFree;
lDiskFree.QuadPart = driveInfo.Cylinders.QuadPart * driveInfo.BytesPerSector *
driveInfo.SectorsPerTrack * driveInfo.TracksPerCylinder;
nMultiplier = PrintFreeSpace (hwndTextBox, szDiskFile, &lDiskFree);
nFileSize = lDiskFree.QuadPart / nMultiplier;
}
else
{
DisplaySizingErrorText (hwndTextBox);
CloseHandle (dev);
return FALSE;
}
CloseHandle (dev);
return TRUE;
}
}
else
{
OPEN_TEST_STRUCT driver;
BOOL bResult;
bResult = OpenDevice (szDiskFile, &driver);
if (bResult == TRUE)
{
LARGE_INTEGER lDiskFree;
lDiskFree.QuadPart = (__int64) (driver.seclast - driver.secstart) * SECTOR_SIZE;
nMultiplier = PrintFreeSpace (hwndTextBox, szDiskFile, &lDiskFree);
nFileSize = lDiskFree.QuadPart / nMultiplier;
}
else
{
DisplaySizingErrorText (hwndTextBox);
return FALSE;
}
return TRUE;
}
}
void
AddComboPair (HWND hComboBox, char *lpszItem, int value)
{
LPARAM nIndex;
nIndex = SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM) lpszItem);
nIndex = SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (LPARAM) value);
}
void
SelectCipher (HWND hComboBox, int *nCipher)
{
LPARAM nCount = SendMessage (hComboBox, CB_GETCOUNT, 0, 0);
LPARAM x, i;
for (i = 0; i < nCount; i++)
{
x = SendMessage (hComboBox, CB_GETITEMDATA, i, 0);
if (x == (LPARAM) * nCipher)
{
SendMessage (hComboBox, CB_SETCURSEL, i, 0);
return;
}
}
/* Something went wrong ; couldn't find the old cipher so we drop
back to a default */
*nCipher = SendMessage (hComboBox, CB_GETITEMDATA, 0, 0);
SendMessage (hComboBox, CB_SETCURSEL, 0, 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
PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
WORD lw = LOWORD (wParam);
WORD hw = HIWORD (wParam);
switch (uMsg)
{
case WM_INITDIALOG:
SetDefaultUserFont (hwndDlg);
switch (nCurPageNo)
{
case FILE_PAGE:
{
UINT nID[4];
nID[0] = IDS_FILE_HELP0;
nID[1] = IDS_FILE_HELP1;
SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_RESETCONTENT, 0, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_LIMITTEXT, TC_MAX_PATH, 0);
LoadSettings (hwndDlg);
SendMessage (GetDlgItem (hwndDlg, IDC_NO_HISTORY), BM_SETCHECK, bHistory ? BST_UNCHECKED : BST_CHECKED, 0);
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_FILE_TITLE));
SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));
SetFocus (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
AddComboItem (GetDlgItem (hwndDlg, IDC_COMBO_BOX), szFileName);
EnableDisableFileNext (GetDlgItem (hwndDlg, IDC_COMBO_BOX),
GetDlgItem (GetParent (hwndDlg), IDC_NEXT));
}
break;
case CIPHER_PAGE:
{
int cipher;
SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_RESETCONTENT, 0, 0);
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_CIPHER_TITLE));
for (cipher = 1; cipher <= LAST_CIPHER_ID; cipher++)
{
AddComboPair (GetDlgItem (hwndDlg, IDC_COMBO_BOX), get_cipher_name (cipher), cipher);
}
SelectCipher (GetDlgItem (hwndDlg, IDC_COMBO_BOX), &nVolCipher);
ComboSelChangeCipher (hwndDlg);
SetFocus (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
switch (pkcs5)
{
case SHA1: CheckButton (GetDlgItem (hwndDlg, IDC_SHA1)); break;
case RIPEMD160: CheckButton (GetDlgItem (hwndDlg, IDC_RIPEMD160)); break;
default: pkcs5 = SHA1; CheckButton (GetDlgItem (hwndDlg, IDC_SHA1)); break;
}
EnableWindow (GetDlgItem (hwndDlg, IDC_SHA1), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_RIPEMD160), FALSE);
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
}
break;
case SIZE_PAGE:
{
char szTmp[32];
UINT nID[4];
nID[0] = IDS_SIZE_HELP0;
nID[1] = IDS_SIZE_HELP1;
nID[2] = 0;
nID[3] = 0;
if (bDevice == TRUE)
{
nID[0] = IDS_SIZE_PARTITION_HELP;
nID[1] = 0;
}
SendMessage (GetDlgItem (hwndDlg, IDC_SPACE_LEFT), WM_SETFONT, (WPARAM) hSmallBoldFont, (LPARAM) TRUE);
SendMessage (GetDlgItem (hwndDlg, IDC_SIZEBOX), EM_LIMITTEXT, 10, 0);
if(!QueryFreeSpace (hwndDlg, GetDlgItem (hwndDlg, IDC_SPACE_LEFT)))
{
nFileSize=0;
SetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), "UNKNOWN");
EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_KB), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_MB), FALSE);
}
else if (bDevice == TRUE)
{
EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_KB), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_MB), FALSE);
}
else
{
EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_KB), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_MB), TRUE);
}
if (nMultiplier == 1024)
SendMessage (GetDlgItem (hwndDlg, IDC_KB), BM_SETCHECK, BST_CHECKED, 0);
else
SendMessage (GetDlgItem (hwndDlg, IDC_MB), BM_SETCHECK, BST_CHECKED, 0);
if (nFileSize != 0)
{
sprintf (szTmp, "%I64u", nFileSize);
SetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), szTmp);
}
SetFocus (GetDlgItem (hwndDlg, IDC_SIZEBOX));
SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_SIZE_TITLE));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
VerifySizeAndUpdate (hwndDlg, FALSE);
}
break;
case PASSWORD_PAGE:
{
UINT nID[4];
nID[0] = IDS_PASSWORD_HELP0;
nID[1] = IDS_PASSWORD_HELP1;
nID[2] = IDS_PASSWORD_HELP2;
nID[3] = IDS_PASSWORD_HELP3;
SendMessage (GetDlgItem (hwndDlg, IDC_PASSWORD), EM_LIMITTEXT, MAX_PASSWORD, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_VERIFY), EM_LIMITTEXT, MAX_PASSWORD, 0);
SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), szPassword);
SetWindowText (GetDlgItem (hwndDlg, IDC_VERIFY), szVerify);
SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD));
SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_PASSWORD_TITLE));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
GetDlgItem (hwndDlg, IDC_PASSWORD),
GetDlgItem (hwndDlg, IDC_VERIFY),
NULL, NULL);
}
break;
case FORMAT_PAGE:
{
UINT nID[4];
nID[0] = IDS_FORMAT_HELP0;
nID[1] = IDS_FORMAT_HELP1;
nID[2] = IDS_FORMAT_HELP2;
nID[3] = 0;
SetTimer (GetParent (hwndDlg), 0xff, RANDOM_SHOW_TIMER, NULL);
hDiskKey = GetDlgItem (hwndDlg, IDC_DISK_KEY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -