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

📄 dlgnewvolwizard.c

📁 文件驱动加密,功能强大,可产生加密分区,支持AES,MD2,MD4,MD5MD2, MD4, MD5, RIPEMD-128, RIPEMD-160, SHA-1, SHA-224, SHA-256,
💻 C
📖 第 1 页 / 共 5 页
字号:
    switch (uMsg)
        {
        case PSCB_GETVERSION:
            {
            // We do *NOT* set the version here. The resize causes the page
            // to be displayed *over* the property sheet's tabs. Setting
            // this version prevents this from working correctly
            // retval = COMCTL32_VERSION;
            break; 
            }

        }

    return retval;
}


// =========================================================================
// 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 _dlgNewVolWizard_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_dlgNewVolWizard_UserRNG);

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


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

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

    // Setup globals...

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

    for (i = 0; i < NEWVOLWIZARD_STEPS; i++)
        {
        G_dlgNewVolWizard_PageCompleted[i] = FALSE;
        }
    memset(
           &G_dlgNewVolWizard_NewVolParams, 
           0,
           sizeof(G_dlgNewVolWizard_NewVolParams)
          );


//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
    // Note: You will get a "Data Abort" error here if lParam is dereferenced    
    //       here and it's NULL
    SetWindowLong(
                  hDlg,
                  GWL_USERDATA,
                  ((LPPROPSHEETPAGE)lParam)->lParam
                 );

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

    // CDB location radiobutton...
    if (DEFAULT_CDBSTOREDINVOLUME == TRUE)
        {
        CheckDlgButton(
                       hDlg,    
                       IDC_RADIO_CDBINVOLUME,
                       BST_CHECKED
                      );
        }
    else
        {
        CheckDlgButton(
                       hDlg, 
                       IDC_RADIO_CDBINKEYFILE,
                       BST_CHECKED
                      );
        }

    // Use volume IV checkbox...
    if (DEFAULT_VOLUMEIV == TRUE)
        {
        CheckDlgButton(
                       hDlg,    
                       IDC_CHECK_VOLUMEIV,
                       BST_CHECKED
                      );
        }
    else
        {
        CheckDlgButton(
                       hDlg, 
                       IDC_CHECK_VOLUMEIV,
                       BST_UNCHECKED
                      );
        }

    // RNG location 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);
    SetDlgItemInt(hDlg, IDC_EDIT_SIZE, DEFAULT_VOLUME_SIZE, TRUE);
    SetDlgItemInt(hDlg, IDC_EDIT_MASTERKEYLEN, DEFAULT_CYPHERKEYLENGTH, TRUE);

    if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_WELCOME)
        {
        SDUTextSetBold(hDlg, IDC_STATIC_WELCOME_TITLE, TRUE);

        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_WELCOME_TITLE,
                         IDS_STRING_WIZTITLE_NEWVOL
                        );
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_WELCOME_DESC,
                         IDS_STRING_WIZDESC_NEWVOL
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_FILENAME)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_FILENAME
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_OFFSET)
        {
        // Make warning more prominent...
        SizeControlMaxWidthBorder(
                                  hDlg,
                                  IDC_STATIC_WARNING_BLOCK_1,
                                  FREEOTFE_DLG_BORDER
                                 );
        SDUTextSetBold(hDlg, IDC_STATIC_WARNING_BLOCK_1, TRUE);
        SDUTextSetUnderline(hDlg, IDC_STATIC_WARNING_BLOCK_1, TRUE);
        SizeControlMaxWidthBorder(
                                  hDlg,
                                  IDC_STATIC_WARNING_BLOCK_2,
                                  FREEOTFE_DLG_BORDER
                                 );
        SDUTextSetBold(hDlg, IDC_STATIC_WARNING_BLOCK_2, TRUE);

        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_OFFSET
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_SIZE)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_SIZE
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_HASHCYPHERIV)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_HASHCYPHERIV
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_MASTERKEYLEN)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_MASTERKEYLEN
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_RNGSELECT)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_RNGSELECT
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_RNGMOUSEMOVEMENT)
        {
        G_dlgNewVolWizard_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_dlgNewVolWizard_UserRNG == NULL)      
            {
            MsgError(hDlg, TEXT("Unable to create user RNG"));
            }
        else
            {
            _dlgNewVolWizard_ResizeUserRNG(hDlg, TRUE);
            }

        SetDlgItemInt(
                      hDlg,
                      IDC_STATIC_USERRNG_STORED,
                      G_dlgNewVolWizard_NewVolParams.RandomPoolFilled_UserInput,
                      TRUE
                     );
        SetDlgItemInt(
                      hDlg,
                      IDC_STATIC_USERRNG_REQUIRED,
                      (sizeof(G_dlgNewVolWizard_NewVolParams.RandomPool_UserInput) * 8),
                      TRUE
                     );

        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_RNGMOUSEMOVEMENT
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_PASSWORD)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_PASSWORD
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_SALT)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_SALT
                        );
        }
    else if (_dlgNewVolWizard_GetPageIdxOfPage(hDlg) == PAGE_IDX_CDBLOCATION)
        {
        SetDlgItemString(
                         G_hInstance,
                         hDlg,
                         IDC_STATIC_INSTRUCTION,
                         IDS_STRING_INSTR_CDBLOCATION
                        );
        }

    SizeControlMaxWidthBorder(
                              hDlg,
                              IDC_STATIC_INSTRUCTION,
                              FREEOTFE_DLG_BORDER
                             );
    SizeControlMaxDepth(hDlg, IDC_STATIC_INSTRUCTION);

    _dlgNewVolWizard_PopulateComboboxes(hDlg);

    _dlgNewVolWizard_EnableDisableControls(hDlg);

    // Set menu buttons as on the first page
    _dlgNewVolWizard_SetWizardButtons(0);

    DEBUGOUTGUI(DEBUGLEV_EXIT, (TEXT("dlgNewVolWizard_HandleMsg_WM_INITDIALOG\n")));
    return TRUE;
}


// =========================================================================
// SelectedUserData - If not NULL, will be set to the data associated with 
//                    the currently selected item
// Returns TRUE/FALSE on success/failure
BOOL dlgNewVolWizard_Combobox_GetItem(
    HWND hDlg,
    UINT ComboboxID,
    void** SelectedUserData
)
{
    BOOL retval = FALSE;
    LRESULT itemIdx;
    LRESULT lResult;
    
    itemIdx = SendMessage(
                        GetDlgItem(hDlg, ComboboxID),      
                        (UINT)CB_GETCURSEL,      
                        0,  // From API docs, must be zero
                        0
                       );

⌨️ 快捷键说明

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