📄 dlgchpasskeyfilewizard.c
字号:
);
if (G_dlgChpassKeyfileWizard_DlgMode == DLGMODE_NEWKEYFILE)
{
SetDlgItemString(
G_hInstance,
hDestDetailsWndPassword,
IDC_STATIC_INSTRUCTION,
IDS_STRING_INSTWIZNEWKEYFILE_DESTPASSWORD
);
}
else
{
SetDlgItemString(
G_hInstance,
hDestDetailsWndPassword,
IDC_STATIC_INSTRUCTION,
IDS_STRING_INSTWIZCHPASS_DESTPASSWORD
);
}
// Advanced...
SetDlgItemInt(
hDestDetailsWndAdvanced,
IDC_EDIT_OFFSET,
DEFAULT_OFFSET,
TRUE
);
SetControlReadonly(
hDestDetailsWndAdvanced,
IDC_EDIT_OFFSET,
TRUE
);
CheckDlgButton(
hDestDetailsWndAdvanced,
IDC_CHECK_CDBATOFFSET,
BST_CHECKED
);
SetControlEnabled(
hDestDetailsWndAdvanced,
IDC_CHECK_CDBATOFFSET,
FALSE
);
SetDlgItemInt(
hDestDetailsWndAdvanced,
IDC_EDIT_SALTLENGTH,
DEFAULT_SALTLENGTH,
TRUE
);
SetDlgItemInt(
hDestDetailsWndAdvanced,
IDC_EDIT_KEYITERATIONS,
DEFAULT_KEYITERATIONS,
TRUE
);
}
else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_RNGSELECT)
{
if (G_dlgChpassKeyfileWizard_DlgMode == DLGMODE_NEWKEYFILE)
{
SetDlgItemString(
G_hInstance,
hDlg,
IDC_STATIC_INSTRUCTION,
IDS_STRING_INSTWIZNEWKEYFILE_RNGSELECT
);
}
else
{
SetDlgItemString(
G_hInstance,
hDlg,
IDC_STATIC_INSTRUCTION,
IDS_STRING_INSTWIZCHPASS_RNGSELECT
);
}
}
else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_RNGMOUSEMOVEMENT)
{
G_dlgChpassKeyfileWizard_UserRNG = CreateWindow(
USERRNG_CONTROL, // Class name
USERRNG_CONTROL, // Window title
(WS_VISIBLE | WS_BORDER), // Style
CW_USEDEFAULT, // X
CW_USEDEFAULT, // Y
CW_USEDEFAULT, // Width
CW_USEDEFAULT, // Height
hDlg, // Parent window
(HMENU)IDCTRL_USERRNG, // Menu/CtrlID
G_hInstance,
NULL
);
if (G_dlgChpassKeyfileWizard_UserRNG == NULL)
{
MsgError(hDlg, TEXT("Unable to create user RNG"));
}
else
{
_dlgChpassKeyfileWizard_ResizeUserRNG(hDlg, TRUE);
}
SetDlgItemInt(
hDlg,
IDC_STATIC_USERRNG_STORED,
G_dlgChpassKeyfileWizard_ChpassKeyfileParams.RandomPoolFilled_UserInput,
TRUE
);
SetDlgItemInt(
hDlg,
IDC_STATIC_USERRNG_REQUIRED,
(sizeof(G_dlgChpassKeyfileWizard_ChpassKeyfileParams.RandomPool_UserInput) * 8),
TRUE
);
SetDlgItemString(
G_hInstance,
hDlg,
IDC_STATIC_INSTRUCTION,
IDS_STRING_INSTR_RNGMOUSEMOVEMENT
);
}
SizeControlMaxWidthBorder(
hDlg,
IDC_STATIC_INSTRUCTION,
FREEOTFE_DLG_BORDER
);
SizeControlMaxDepth(hDlg, IDC_STATIC_INSTRUCTION);
_dlgChpassKeyfileWizard_EnableDisableControls(hDlg);
// Set menu buttons as on the first page
_dlgChpassKeyfileWizard_SetWizardButtons(0);
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgChpassKeyfileWizard_HandleMsg_WM_INITDIALOG\n")));
return TRUE;
}
// =========================================================================
BOOL CALLBACK dlgChpassKeyfileWizard_HandleMsg_WM_DESTROY(HWND hWnd)
{
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgChpassKeyfileWizard_HandleMsg_WM_DESTROY\n")));
if (G_dlgChpassKeyfileWizard_MenuBar != NULL)
{
DestroyWindow(G_dlgChpassKeyfileWizard_MenuBar);
G_dlgChpassKeyfileWizard_MenuBar = NULL;
}
if (G_dlgChpassKeyfileWizard_UserRNG != NULL)
{
DestroyWindow(G_dlgChpassKeyfileWizard_UserRNG);
G_dlgChpassKeyfileWizard_UserRNG = NULL;
}
if (hSrcDetailsWndPassword != NULL)
{
DestroyWindow(hSrcDetailsWndPassword);
hSrcDetailsWndPassword = NULL;
}
if (hSrcDetailsWndAdvanced != NULL)
{
DestroyWindow(hSrcDetailsWndAdvanced);
hSrcDetailsWndAdvanced = NULL;
}
if (hDestDetailsWndPassword != NULL)
{
DestroyWindow(hDestDetailsWndPassword);
hDestDetailsWndPassword = NULL;
}
if (hDestDetailsWndAdvanced != NULL)
{
DestroyWindow(hDestDetailsWndAdvanced);
hDestDetailsWndAdvanced = NULL;
}
G_dlgChpassKeyfileWizard_AllowFinish = FALSE;
DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgChpassKeyfileWizard_HandleMsg_WM_DESTROY\n")));
return TRUE;
}
// =========================================================================
// hTabWnd - The tab window
// hWnd - The window to be displayed on the tab
void _dlgChpassKeyfileWizard_SizeWindowTab(
HWND hTabWnd,
HWND hWnd
)
{
RECT rcTab;
RECT rcAdjust;
if (GetWindowRect(hTabWnd, &rcTab))
{
rcAdjust = rcTab;
TabCtrl_AdjustRect(hTabWnd, FALSE, &rcAdjust);
rcTab.bottom = rcAdjust.bottom;
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT("Window: 0x%0.8x\n"), hWnd));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT(" left : %.3d\n"), rcTab.left));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT(" top : %.3d\n"), rcTab.top));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT(" right : %.3d\n"), rcTab.right));
DEBUGOUTGUI(DEBUGLEV_INFO, (TEXT(" bottom: %.3d\n"), rcTab.bottom));
SetWindowPos(
hWnd,
NULL,
rcTab.left,
rcTab.top,
(rcTab.right - rcTab.left),
(rcTab.bottom - rcTab.top),
SWP_NOZORDER
);
}
}
// =========================================================================
void _dlgChpassKeyfileWizard_SizeWindowTab_CtrlID(
HWND hTabParentWnd,
int tabCtrlID,
HWND hWnd
)
{
HWND tmpHWND;
if (
(hTabParentWnd != NULL) &&
(hWnd != NULL)
)
{
tmpHWND = GetDlgItem(hTabParentWnd, tabCtrlID);
if (tmpHWND != NULL)
{
_dlgChpassKeyfileWizard_SizeWindowTab(tmpHWND, hWnd);
}
}
}
// =========================================================================
// Resize the property sheet page so that the tabs at the top are
// hidden by it; we don't want them shown for our wizard
BOOL CALLBACK dlgChpassKeyfileWizard_HandleMsg_WM_SIZE(HWND hDlg)
{
RECT rcParent;
#if DBG
// Nothing; tab header displayed under debug
#else
RECT rcClient;
#endif
static BOOL resizing = FALSE;
DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgChpassKeyfileWizard_HandleMsg_WM_SIZE\n")));
if (
(hDlg == hSrcDetailsWndPassword) ||
(hDlg == hSrcDetailsWndAdvanced) ||
(hDlg == hDestDetailsWndPassword) ||
(hDlg == hDestDetailsWndAdvanced)
)
{
// Do nothing; handed when the parent window (tabbed window) is
// resized
return TRUE;
}
// Prevent infinite recursion as we resize the dialog...
if (!(resizing))
{
resizing = TRUE;
#if DBG
// Nothing; tab header displayed under debug
#else
// Get size of display area...
GetClientRect(GetParent(hDlg), &rcClient);
// Resize...
SetWindowPos(
hDlg,
NULL,
0,
0,
rcClient.right,
rcClient.bottom,
SWP_NOZORDER
);
#endif
// Resize specific property sheets...
GetClientRect(hDlg, &rcParent);
switch (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg))
{
case PAGE_IDX_WELCOME:
{
SizeControlMaxWidthBorder(
hDlg,
IDC_STATIC_WELCOME_TITLE,
FREEOTFE_DLG_BORDER
);
SizeControlMaxWidthBorder(
hDlg,
IDC_STATIC_WELCOME_DESC,
FREEOTFE_DLG_BORDER
);
SizeControlMaxWidthBorder(
hDlg,
IDC_STATIC_WELCOME_NEXT,
FREEOTFE_DLG_BORDER
);
break;
}
case PAGE_IDX_SRCDETAILS:
{
// Resize src tab window...
SizeControlToParent(hDlg, IDC_TAB1);
// Resize the tabsheets within the src tab window...
_dlgChpassKeyfileWizard_SizeWindowTab_CtrlID(
hDlg,
IDC_TAB1,
hSrcDetailsWndPassword
);
_dlgChpassKeyfileWizard_SizeWindowTab_CtrlID(
hDlg,
IDC_TAB1,
hSrcDetailsWndAdvanced
);
break;
}
case PAGE_IDX_DESTDETAILS:
{
// Resize dest tab window...
SizeControlToParent(hDlg, IDC_TAB1);
// Resize the tabsheets within the dest tab window...
_dlgChpassKeyfileWizard_SizeWindowTab_CtrlID(
hDlg,
IDC_TAB1,
hDestDetailsWndPassword
);
_dlgChpassKeyfileWizard_SizeWindowTab_CtrlID(
hDlg,
IDC_TAB1,
hDestDetailsWndAdvanced
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -