📄 cabwoman.c
字号:
return dCount;
}
// =================================================================
// ABOUT DIALOG
// =================================================================
LRESULT CALLBACK AboutDlgInitDialog (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
CenterWindow (hWnd);
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK AboutDlgCtlColorEdit (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return (LRESULT) GetStockObject (LTGRAY_BRUSH);
}
// -----------------------------------------------------------------
LRESULT CALLBACK AboutCmdEndDialog (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
EndDialog (hWnd, (WORD) wParam);
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
DISPATCH AboutCmd [] = {IDOK, AboutCmdEndDialog,
IDCANCEL, AboutCmdEndDialog,
DEFAULT_RESULT, FALSE};
LRESULT CALLBACK AboutDlgCommand (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return Dispatcher (AboutCmd, (WORD) wParam,
hWnd, uMsg, wParam, lParam);
}
// -----------------------------------------------------------------
DISPATCH AboutDlg [] = {WM_INITDIALOG, AboutDlgInitDialog,
WM_CTLCOLOREDIT, AboutDlgCtlColorEdit,
WM_COMMAND, AboutDlgCommand,
DEFAULT_RESULT, FALSE};
LRESULT CALLBACK AboutDlgProc (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return Dispatcher (AboutDlg, uMsg,
hWnd, uMsg, wParam, lParam);
}
// =================================================================
// INFO DIALOG
// =================================================================
LRESULT CALLBACK InfoDlgInitDialog (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BYTE abCabinet [MAX_PATH];
HCABINET hc;
CenterWindow (hWnd);
if (GetListBoxText ((HWND) lParam,
IDL_CABINETS,
abCabinet,
MAX_PATH))
{
printfDlgItem (hWnd, IDT_THIS, "%s", abCabinet);
if ((hc = OpenCabinet (abCabinet)) != NULL)
{
printfDlgItem (hWnd,
IDT_PREVIOUS,
"%s%s%s%s",
hc->pbPrevCab,
(hc->pbPrevDisk [0] ? " [" : abNull),
hc->pbPrevDisk,
(hc->pbPrevDisk [0] ? "]" : abNull));
printfDlgItem (hWnd,
IDT_NEXT,
"%s%s%s%s",
hc->pbNextCab,
(hc->pbNextDisk [0] ? " [" : abNull),
hc->pbNextDisk,
(hc->pbNextDisk [0] ? "]" : abNull));
printfDlgItem (hWnd,
IDT_RESERVED,
"%lu",
hc->dReserve);
printfDlgItem (hWnd,
IDT_SET_ID,
"%lu",
hc->dSetId);
printfDlgItem (hWnd,
IDT_CAB_NUMBER,
"%lu",
hc->dCabNumber);
printfDlgItem (hWnd,
IDT_NFOLDERS,
"%lu",
hc->dFolders);
printfDlgItem (hWnd,
IDT_NFILES,
"%lu",
hc->dFiles);
printfDlgItem (hWnd,
IDT_EXTRA_DATA,
"0x%08X",
hc->dExtraData);
printfDlgItem (hWnd,
IDT_CAB_LIST,
"0x%08X",
hc->dCabList);
printfDlgItem (hWnd,
IDT_FOLDER_LIST,
"0x%08X",
hc->dFolderList);
printfDlgItem (hWnd,
IDT_FILE_LIST,
"0x%08X",
hc->dFileList);
printfDlgItem (hWnd,
IDT_FILE_DATA,
"0x%08X",
hc->dFileData);
printfDlgItem (hWnd,
IDT_CAB_SIZE,
"0x%08X",
hc->dCabSize);
CloseCabinet (hc);
}
}
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK InfoDlgCtlColorEdit (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return (LRESULT) GetStockObject (LTGRAY_BRUSH);
}
// -----------------------------------------------------------------
LRESULT CALLBACK InfoCmdEndDialog (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
EndDialog (hWnd, (WORD) wParam);
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
DISPATCH InfoCmd [] = {IDOK, InfoCmdEndDialog,
IDCANCEL, InfoCmdEndDialog,
DEFAULT_RESULT, FALSE};
LRESULT CALLBACK InfoDlgCommand (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return Dispatcher (InfoCmd, (WORD) wParam,
hWnd, uMsg, wParam, lParam);
}
// -----------------------------------------------------------------
DISPATCH InfoDlg [] = {WM_INITDIALOG, InfoDlgInitDialog,
WM_CTLCOLOREDIT, InfoDlgCtlColorEdit,
WM_COMMAND, InfoDlgCommand,
DEFAULT_RESULT, FALSE};
LRESULT CALLBACK InfoDlgProc (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return Dispatcher (InfoDlg, uMsg,
hWnd, uMsg, wParam, lParam);
}
// =================================================================
// MAIN DIALOG
// =================================================================
LRESULT CALLBACK MainDlgInitDialog (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
fMainDlgInit = TRUE;
CenterWindow (hWnd);
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainDlgPaint (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
LRESULT Result = DefWindowProc (hWnd, uMsg, wParam, lParam);
if (fMainDlgInit)
{
fMainDlgInit = FALSE;
UpdateWindow (hWnd);
ListVolumes (hWnd, IDT_VOLUMES, IDL_VOLUMES);
DoubleClickListBox (hWnd, IDL_VOLUMES);
}
return Result;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainDlgCtlColorEdit (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return (LRESULT) GetStockObject (LTGRAY_BRUSH);
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainDlgCtlColorListBox (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return (LRESULT) GetStockObject (WHITE_BRUSH);
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainDlgClose (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
HWND hButton = GetDlgItem (hWnd, IDB_EXIT);
if (hButton != NULL)
{
PostMessage (hWnd,
WM_COMMAND,
(WPARAM) MAKELONG (IDB_EXIT, BN_CLICKED),
(LPARAM) hButton);
}
return (LRESULT) TRUE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainCmdVolumes (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
DWORD dVolType;
PBYTE pbVolType;
BYTE abVolume [] = "?:";
if ((wParam >> 16) == LBN_SELCHANGE)
{
dVolType = GetListBoxData (hWnd, IDL_VOLUMES);
switch (dVolType)
{
case DRIVE_REMOVABLE: pbVolType = "Removable"; break;
case DRIVE_FIXED: pbVolType = "Fixed"; break;
case DRIVE_REMOTE: pbVolType = "Remote"; break;
case DRIVE_CDROM: pbVolType = "CD-ROM"; break;
case DRIVE_RAMDISK: pbVolType = "RAM Disk"; break;
default: pbVolType = "Unknown"; break;
}
SetDlgItemText (hWnd, IDT_VOLTYPE, pbVolType);
return (LRESULT) TRUE;
}
if ((wParam >> 16) == LBN_DBLCLK)
{
if (GetListBoxText (hWnd,
IDL_VOLUMES,
abVolume,
sizeof (abVolume)))
{
SetDefaultDirectory (abVolume);
ListDirectories (hWnd,
IDT_DIRECTORIES,
IDL_DIRECTORIES);
ListCabinets (hWnd,
IDT_CABINETS,
IDL_CABINETS);
ListFiles (hWnd,
IDT_FILES,
IDL_FILES);
}
return (LRESULT) TRUE;
}
return (LRESULT) FALSE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainCmdDirectories (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BYTE abVolume [] = "?:";
BYTE abDirectory [MAX_PATH];
if ((wParam >> 16) == LBN_SELCHANGE)
{
return (LRESULT) TRUE;
}
if ((wParam >> 16) == LBN_DBLCLK)
{
if (GetListBoxText (hWnd,
IDL_VOLUMES,
abVolume,
sizeof (abVolume))
&&
GetListBoxText (hWnd,
IDL_DIRECTORIES,
abDirectory,
MAX_PATH))
{
SetDirectory (abVolume, abDirectory);
ListDirectories (hWnd,
IDT_DIRECTORIES,
IDL_DIRECTORIES);
ListCabinets (hWnd,
IDT_CABINETS,
IDL_CABINETS);
ListFiles (hWnd,
IDT_FILES,
IDL_FILES);
}
return (LRESULT) TRUE;
}
return (LRESULT) FALSE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainCmdCabinets (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if ((wParam >> 16) == LBN_SELCHANGE)
{
return (LRESULT) TRUE;
}
if ((wParam >> 16) == LBN_DBLCLK)
{
DialogBoxParam (hInst,
INFO_DIALOG,
hWnd,
InfoDlgProc,
(LPARAM) hWnd);
return (LRESULT) TRUE;
}
return (LRESULT) FALSE;
}
// -----------------------------------------------------------------
LRESULT CALLBACK MainCmdFiles (HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
CAB_ENTRY ce;
FILETIME ft;
SYSTEMTIME st;
BYTE abCabinet [MAX_PATH];
BYTE abEntry [MAX_PATH];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -