⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgchpasskeyfilewizard.c

📁 文件驱动加密,功能强大,可产生加密分区,支持AES,MD2,MD4,MD5MD2, MD4, MD5, RIPEMD-128, RIPEMD-160, SHA-1, SHA-224, SHA-256,
💻 C
📖 第 1 页 / 共 5 页
字号:
    HRSRC hrsrc;
    HGLOBAL hglb;

    hrsrc = FindResource(
                         G_hInstance,
                         MAKEINTRESOURCE(ResourceID),
                         RT_DIALOG
                        );
    hglb = LoadResource(G_hInstance, hrsrc);
    dlgtempl = (DLGTEMPLATE*)LockResource(hglb); 
    return CreateDialogIndirectParam(
                            G_hInstance,
                            dlgtempl,
                            ParentHWND,
                            dlgChpassKeyfileWizard_PropSheetPageProc,
                            SUBTAB_FLAG
                           );

}


// =========================================================================
// The first time the user RNG is setup, it must use the designtime 
// positioned placeholder. Subsequently, it can just resize it's width and
// depth itsself (having already got it's top border from the placeholder)
void _dlgChpassKeyfileWizard_ResizeUserRNG(
    HWND hDlg,
    BOOL usePlaceholder
)
{
    HWND hWndTmp;

    // We resize the userRNG such that it's as wide and deep as we
    // can make it, but with the top as being where the top of the
    // placeholder text was; this makes it easier to position on the
    // dialog at design time
    if (usePlaceholder)
        {
        SizeControlMaxWidth(hDlg, IDC_STATIC_USERRNGPLACEHOLDER);
        SizeControlMaxDepth(hDlg, IDC_STATIC_USERRNGPLACEHOLDER);

        hWndTmp = GetDlgItem(hDlg, IDC_STATIC_USERRNGPLACEHOLDER);
        SizeWindowToOverlapWindow(hWndTmp, G_dlgChpassKeyfileWizard_UserRNG);

        SetControlVisible(hDlg, IDC_STATIC_USERRNGPLACEHOLDER, FALSE);
        }
    else
        {
        SizeControlMaxWidth(hDlg, IDCTRL_USERRNG);
        SizeControlMaxDepth(hDlg, IDCTRL_USERRNG);
        }
}

// =========================================================================
BOOL CALLBACK dlgChpassKeyfileWizard_HandleMsg_WM_INITDIALOG(HWND hDlg, LPARAM lParam)
{
    SHINITDLGINFO shidi;
    int i;

    DEBUGOUTGUI(DEBUGLEV_ENTER, (TEXT("dlgChpassKeyfileWizard_HandleMsg_WM_INITDIALOG\n")));

    // Setup globals...

    // Don't recreate menu if it's already been done
    if (G_dlgChpassKeyfileWizard_MenuBar == NULL)
        {
        G_dlgChpassKeyfileWizard_MenuBar = SetupMenu(hDlg, IDR_MENU_WIZARD);
        }

    for (i = 0; i < CHPASS_KEYFILEWIZARD_STEPS; i++)
        {
        G_dlgChpassKeyfileWizard_PageCompleted[i] = FALSE;
        }
    memset(
           &G_dlgChpassKeyfileWizard_ChpassKeyfileParams, 
           0,
           sizeof(G_dlgChpassKeyfileWizard_ChpassKeyfileParams)
          );


//xxx - get rid of this?
    // This isn't actually needed for property sheet dialog...
    shidi.dwMask = SHIDIM_FLAGS;
    shidi.dwFlags = (
                     SHIDIF_DONEBUTTON | 
                     SHIDIF_SIPDOWN | 
                     SHIDIF_SIZEDLGFULLSCREEN
                    );
    shidi.hDlg = hDlg;
    SHInitDialog(&shidi);

    // Set userdata on the page being initialized; we use this to identify
    // the different pages
    // Because this procedure is called to initialize both the propertysheet
    // pages *and* the dialogs (windows) created for the Password/Advanced tabs
    // on the src/dest details propertysheet page, we ensure this isn't set
    // for those windows.
    // This is done by passing a flag lParam to them when they're created,
    // and detecting it here
    // Note: You will get a "Data Abort" error here if lParam is dereferenced    
    //       here and it's NULL
    if (lParam != SUBTAB_FLAG)
        {
        SetWindowLong(
                      hDlg,
                      GWL_USERDATA,
                      ((LPPROPSHEETPAGE)lParam)->lParam
                     );
        }

    // Default values for controls...
    SetDlgItemText(hDlg, IDC_EDIT_FILENAME,   DEFAULT_FILENAME);
    SetDlgItemText(hDlg, IDC_EDIT_PASSWORD,   DEFAULT_PASSWORD);
    SetDlgItemText(hDlg, IDC_EDIT_PASSWORDCONFIRM, DEFAULT_PASSWORD);
    SetDlgItemInt(hDlg, IDC_EDIT_OFFSET, DEFAULT_OFFSET, TRUE);

    // RNG select checkbox...
    if (DEFAULT_RND_USERINPUT)
        {
        CheckDlgButton(
                       hDlg, 
                       IDC_CHECK_RNGUSERINPUT,
                       BST_CHECKED
                      );
        }
    if (DEFAULT_RNG_MSCRYPTOAPI)
        {
        CheckDlgButton(
                       hDlg, 
                       IDC_CHECK_RNGMSCRYPTOAPI,
                       BST_CHECKED
                      );
        }

    SetDlgItemInt(hDlg, IDC_EDIT_SALTLENGTH, DEFAULT_SALTLENGTH, TRUE);
    SetDlgItemInt(hDlg, IDC_EDIT_KEYITERATIONS, DEFAULT_KEYITERATIONS, TRUE);

    if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_WELCOME)
        {
        int titleString;
        int descString;

        SDUTextSetBold(hDlg, IDC_STATIC_WELCOME_TITLE, TRUE);

        if (G_dlgChpassKeyfileWizard_DlgMode == DLGMODE_NEWKEYFILE)
            {
            titleString = IDS_STRING_WIZTITLE_NEWKEYFILE;
            descString = IDS_STRING_WIZDESC_NEWKEYFILE;
            }
        else
            {
            titleString = IDS_STRING_WIZTITLE_CHPASS;
            descString = IDS_STRING_WIZDESC_CHPASS;
            }

        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_WELCOME_TITLE,
                         titleString
                        );
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_WELCOME_DESC,
                         descString
                        );
        }
    else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_SRCFILENAME)
        {
        SetStaticText(hDlg, IDC_STATIC_FILENAME, TEXT("Volume/keyfile:"));

        if (G_dlgChpassKeyfileWizard_DlgMode == DLGMODE_NEWKEYFILE)
            {
            SetDlgItemString(
                             G_hInstance,
                             hDlg,
                             IDC_STATIC_INSTRUCTION,
                             IDS_STRING_INSTWIZNEWKEYFILE_SRCFILE
                            );
            }
        else
            {
            SetDlgItemString(
                             G_hInstance,
                             hDlg,
                             IDC_STATIC_INSTRUCTION,
                             IDS_STRING_INSTWIZCHPASS_SRCFILE
                            );
            }
        }
    else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_SRCDETAILS)
        {
        HWND tmpHWND;
        TCITEM tci;

        // Setup the tab control to get the WinCE look and feel...
        tmpHWND = GetDlgItem(hDlg, IDC_TAB1);
        SendMessage(tmpHWND, CCM_SETVERSION, COMCTL32_VERSION, 0); 
        
        tci.mask = TCIF_TEXT;
        tci.pszText = TEXT("Password");
        TabCtrl_InsertItem(tmpHWND, SRCDETAILSTAB_IDX_PASSWORD, &tci);
        tci.mask = TCIF_TEXT;
        tci.pszText = TEXT("Advanced");
        TabCtrl_InsertItem(tmpHWND, SRCDETAILSTAB_IDX_ADVANCED, &tci);

        // Create the contents for the two tabs    
        hSrcDetailsWndPassword = _dlgChpassKeyfileWizard_CreateDialogWindow(
                                        tmpHWND,
                                        IDD_NEWVOLWIZARD_PASSWORD
                                       );
        hSrcDetailsWndAdvanced = _dlgChpassKeyfileWizard_CreateDialogWindow(
                                        tmpHWND,
                                        IDD_VOL_ADV_OPTS
                                       );

        // Adjust controls for the context in which they will appear...
        SetControlVisible(
                          hSrcDetailsWndAdvanced,
                          IDC_STATIC_MOUNTPOINT,
                          FALSE
                         );
        SetControlVisible(
                          hSrcDetailsWndAdvanced,
                          IDC_EDIT_MOUNTPOINT,
                          FALSE
                         );
        SetControlVisible(
                          hSrcDetailsWndPassword,
                          IDC_STATIC_PASSWORDCONFIRM,
                          FALSE
                         );
        SetControlVisible(
                          hSrcDetailsWndPassword,
                          IDC_EDIT_PASSWORDCONFIRM,
                          FALSE
                         );


        // Set defaults...
        // Password...
        SetDlgItemText(
                       hSrcDetailsWndPassword,
                       IDC_EDIT_PASSWORD,
                       DEFAULT_PASSWORD
                      );

        if (G_dlgChpassKeyfileWizard_DlgMode == DLGMODE_NEWKEYFILE)
            {
            SetDlgItemString(
                             G_hInstance,
                             hSrcDetailsWndPassword,
                             IDC_STATIC_INSTRUCTION,
                             IDS_STRING_INSTWIZNEWKEYFILE_SRCPASSWORD
                            );
            }
        else
            {
            SetDlgItemString(
                             G_hInstance,
                             hSrcDetailsWndPassword,
                             IDC_STATIC_INSTRUCTION,
                             IDS_STRING_INSTWIZCHPASS_SRCPASSWORD
                            );
            }


        // Advanced...
        SetDlgItemInt(
                      hSrcDetailsWndAdvanced, 
                      IDC_EDIT_OFFSET, 
                      DEFAULT_OFFSET,
                      TRUE
                     );
        CheckDlgButton(
                       hSrcDetailsWndAdvanced,    
                       IDC_CHECK_CDBATOFFSET,
                       BST_CHECKED
                      );
        SetControlEnabled(
                          hSrcDetailsWndAdvanced,
                          IDC_CHECK_CDBATOFFSET,
                          FALSE
                         );
        SetDlgItemInt(
                      hSrcDetailsWndAdvanced,
                      IDC_EDIT_SALTLENGTH,
                      DEFAULT_SALTLENGTH,
                      TRUE
                     );
        SetDlgItemInt(
                      hSrcDetailsWndAdvanced,
                      IDC_EDIT_KEYITERATIONS,
                      DEFAULT_KEYITERATIONS,
                      TRUE
                     );

        }
    else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_DESTFILENAME)
        {
        SetStaticText(hDlg, IDC_STATIC_FILENAME, TEXT("New keyfile:"));

        // Note: Only used when creating a new keyfile
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTWIZNEWKEYFILE_DESTFILE
                        );
        }
    else if (_dlgChpassKeyfileWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_DESTDETAILS)
        {
        HWND tmpHWND;
        TCITEM tci;

        // Setup the tab control to get the WinCE look and feel...
        tmpHWND = GetDlgItem(hDlg, IDC_TAB1);
        SendMessage(tmpHWND, CCM_SETVERSION, COMCTL32_VERSION, 0); 
        
        tci.mask = TCIF_TEXT;
        tci.pszText = TEXT("Password");
        TabCtrl_InsertItem(tmpHWND, DESTDETAILSTAB_IDX_PASSWORD, &tci);
        tci.mask = TCIF_TEXT;
        tci.pszText = TEXT("Advanced");
        TabCtrl_InsertItem(tmpHWND, DESTDETAILSTAB_IDX_ADVANCED, &tci);

        // Create the contents for the two tabs        
        hDestDetailsWndPassword = _dlgChpassKeyfileWizard_CreateDialogWindow(
                                        tmpHWND,
                                        IDD_NEWVOLWIZARD_PASSWORD
                                       );
        hDestDetailsWndAdvanced = _dlgChpassKeyfileWizard_CreateDialogWindow(
                                        tmpHWND,
                                        IDD_VOL_ADV_OPTS
                                       );

        SetControlVisible(
                          hDestDetailsWndAdvanced,
                          IDC_STATIC_MOUNTPOINT,
                          FALSE
                         );
        SetControlVisible(
                          hDestDetailsWndAdvanced,
                          IDC_EDIT_MOUNTPOINT,
                          FALSE
                         );

        // Set defaults...
        // Password...
        SetDlgItemText(
                       hDestDetailsWndPassword, 
                       IDC_EDIT_PASSWORD, 
                       DEFAULT_PASSWORD
                      );
        SetDlgItemText(
                       hDestDetailsWndPassword,
                       IDC_EDIT_PASSWORDCONFIRM, 
                       DEFAULT_PASSWORD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -