📄 dlgoptions.c
字号:
{
BOOL retval;
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgOptions_ValidateInput\n")));
retval = TRUE;
if (retval)
{
retval = ValidateMountpoint(hDlg, Opts->MntPntDefault, TRUE, FALSE);
}
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgOptions_ValidateInput\n")));
return retval;
}
// =========================================================================
// Returns: TRUE if the file extension has an association, otherwise FALSE
BOOL
_dlgOptions_CheckFileAssociationPresent()
{
BOOL retval;
retval = RegIsFileExtensionAssociated(NULL, VOL_FILE_TYPE);
return retval;
}
// =========================================================================
void
_dlgOptions_FileAssociation(HWND hDlg)
{
WCHAR tmpFilename[FREEOTFE_MAX_FILENAME_LENGTH];
WCHAR tmpOpenCommand[FREEOTFE_MAX_FILENAME_LENGTH];
BOOL associateSelected;
// Do nothing with the file extension, unless the user's changed the
// setting
associateSelected = (IsDlgButtonChecked(
hDlg,
IDC_CHECK_ASSOCIATE
) == BST_CHECKED);
if (associateSelected != G_dlgOptions_FileExtnAssociated)
{
if (associateSelected)
{
if (GetModuleFileName(
NULL,
tmpFilename,
sizeof(tmpFilename)
) != 0)
{
_snwprintf(
tmpOpenCommand,
(sizeof(tmpOpenCommand) / sizeof(tmpOpenCommand[0])),
FILE_ASSOC_OPEN,
tmpFilename
);
RegAssociateFileExtension(
VOL_FILE_EXTN,
VOL_FILE_TYPE,
VOL_FILE_DESC,
tmpOpenCommand,
tmpFilename,
IDI_ICON_MAIN
);
}
}
else
{
RegDisassociateFileExtension(
VOL_FILE_EXTN,
VOL_FILE_TYPE
);
}
}
}
// =========================================================================
BOOL CALLBACK dlgOptions_HandleMsg_WM_COMMAND(HWND hDlg, WPARAM wParam)
{
BOOL retval = FALSE;
int ctrlID;
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgOptions_HandleMsg_WM_COMMAND\n")));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Command: %d\n"), LOWORD(wParam)));
ctrlID = LOWORD(wParam);
switch(ctrlID)
{
case IDOK:
{
BOOL allOK;
OPTIONS* newOptions;
allOK = TRUE;
if (allOK)
{
newOptions = OptionsCopy(G_Options);
allOK = (newOptions != NULL);
}
if (allOK)
{
allOK = dlgOptions_GetUserInput(hDlg, newOptions);
}
if (allOK)
{
allOK = dlgOptions_ValidateUserInput(hDlg, newOptions);
}
if (allOK)
{
OptionsFree(G_Options);
G_Options = newOptions;
if (!(OptionsWrite(G_Options)))
{
MsgError(hDlg, TEXT("Options could not be saved."));
}
}
else
{
OptionsFree(newOptions);
}
// Sort out file associations...
_dlgOptions_FileAssociation(hDlg);
if (allOK)
{
EndDialog(hDlg, TRUE);
}
retval = TRUE;
break;
}
case IDCANCEL:
{
EndDialog(hDlg, TRUE);
retval = TRUE;
break;
}
case IDC_BUTTON_BROWSEEXPLORER:
{
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;
ofn.lpstrFilter = FILE_FILTER_FLT_EXECUTABLES;
ofn.nMaxCustFilter = FILE_FILTER_CNT_EXECUTABLES;
ofn.nFilterIndex = FILE_FILTER_DFLT_EXECUTABLES;
fileDlgOK = GetOpenFileName(&ofn);
if (fileDlgOK)
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Open file dialog OK'd...\n")));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Filename: %ls\n"), filename));
SetDlgItemText(hDlg, IDC_EDIT_EXPLORER, filename);
}
else
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Open file dialog cancelled\n")));
}
break;
}
case IDC_RADIO_MNTPNT_VOL:
case IDC_RADIO_MNTPNT_DEFAULT:
{
_dlgOptions_EnableDisableControls(hDlg);
break;
}
}
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgOptions_HandleMsg_WM_COMMAND\n")));
return retval;
}
// =========================================================================
BOOL CALLBACK dlgOptions_Proc(
HWND hDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam
)
{
BOOL retval = FALSE;
switch(msg)
{
case WM_INITDIALOG:
{
retval = dlgOptions_HandleMsg_WM_INITDIALOG(hDlg);
break;
}
case WM_CLOSE:
{
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("MSG: WM_CLOSE\n")));
retval = dlgOptions_HandleMsg_WM_CLOSE(hDlg);
break;
}
case WM_COMMAND:
{
retval = dlgOptions_HandleMsg_WM_COMMAND(hDlg, wParam);
break;
}
}
return retval;
}
// =========================================================================
// =========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -