Пример #1
0
static int OnDeltaPos(HWND hDlg, NMUPDOWN * pNMUpDown)
{
    TFileTestData * pData = GetDialogData(hDlg);
    LONGLONG ByteOffset = 0;
    DWORD Length = 0;

    if(pNMUpDown->hdr.idFrom == IDC_BYTE_OFFSET_SPIN)
    {
        DlgText2Hex64(hDlg, IDC_BYTE_OFFSET, &ByteOffset);
        ByteOffset -= pNMUpDown->iDelta * 0x10000;
        if(ByteOffset < 0)
            ByteOffset = 0;
        Hex2DlgText64(hDlg, IDC_BYTE_OFFSET, ByteOffset);
        UpdateFileData(hDlg, NULL, pData->cbFileData, pData->FillPattern);
    }

    if(pNMUpDown->hdr.idFrom == IDC_LENGTH_SPIN)
    {
        DlgText2Hex32(hDlg, IDC_LENGTH, &Length);
        Length -= pNMUpDown->iDelta * 0x1000;
        if((int)Length < 0)
            Length = 0;
        Hex2DlgText32(hDlg, IDC_LENGTH, Length);
        UpdateFileData(hDlg, NULL, pData->cbFileData, pData->FillPattern);
    }

    return TRUE;
}
Пример #2
0
static int OnCommand(HWND hDlg, UINT nNotify, UINT nIDCtrl)
{
    TFileTestData * pData;

    if(nNotify == BN_CLICKED)
    {
        switch(nIDCtrl)
        {
        case IDC_READ_FILE:
        case IDC_WRITE_FILE:
        case IDC_NTREAD_FILE:
        case IDC_NTWRITE_FILE:
            return OnReadWriteFile(hDlg, nIDCtrl);

        case IDC_LOCK_FILE:
        case IDC_UNLOCK_FILE:
        case IDC_NTLOCK_FILE:
        case IDC_NTUNLOCK_FILE:
            return OnLockUnlockFile(hDlg, nIDCtrl);

        case IDC_FILL_DATA:
            return ExecuteContextMenuForDlgItem(hDlg, IDC_FILL_DATA, IDR_DATA_PATTERN);

        case IDC_FILL_DATA_ZEROS:
        case IDC_FILL_DATA_PATTERN:
        case IDC_FILL_DATA_RANDOM:
            return UpdateFileData(hDlg, NULL, 0, nIDCtrl);

        case IDC_GET_FILE_SIZE:
            return OnGetFileSizeClick(hDlg);

        case IDC_SET_FILE_POINTER:
            return OnSetFilePointerClick(hDlg);

        case IDC_SET_END_OF_FILE:
            return OnSetEndOfFileClick(hDlg);
        }
    }

    if(nNotify == EN_KILLFOCUS)
    {
        if(nIDCtrl == IDC_BYTE_OFFSET || nIDCtrl == IDC_LENGTH)
        {
            pData = GetDialogData(hDlg);
            UpdateFileData(hDlg, NULL, pData->cbFileData, 0);
        }
    }
    return FALSE;
}
Пример #3
0
static int OnInitDialog(HWND hDlg, LPARAM lParam)
{
    PROPSHEETPAGE * pPage = (PROPSHEETPAGE *)lParam;
    TFileTestData * pData = (TFileTestData *)pPage->lParam;
    HWND hWndChild;

    SetDialogData(hDlg, pPage->lParam);

    // Configure dialog resizing
    if(pData->bEnableResizing)
    {
        pAnchors = new TAnchors();
        pAnchors->AddAnchor(hDlg, IDC_BYTE_OFFSET_TITLE, akLeft | akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_BYTE_OFFSET, akLeft | akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_BYTE_OFFSET_SPIN, akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_LENGTH_TITLE, akLeftCenter | akTop | akRight);
        pAnchors->AddAnchor(hDlg, IDC_LENGTH, akLeftCenter | akTop | akRight);
        pAnchors->AddAnchor(hDlg, IDC_LENGTH_SPIN, akTop | akRight);
        pAnchors->AddAnchor(hDlg, IDC_INCREASE_FILEPOS, akLeft | akTop | akRight);
        pAnchors->AddAnchor(hDlg, IDC_READ_FILE, akLeft | akTop);
        pAnchors->AddAnchor(hDlg, IDC_WRITE_FILE, akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_NTREAD_FILE, akLeftCenter | akTop);
        pAnchors->AddAnchor(hDlg, IDC_NTWRITE_FILE, akRight | akTop);
        pAnchors->AddAnchor(hDlg, IDC_LOCK_FILE, akLeft | akTop);
        pAnchors->AddAnchor(hDlg, IDC_UNLOCK_FILE, akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_NTLOCK_FILE, akLeftCenter | akTop);
        pAnchors->AddAnchor(hDlg, IDC_NTUNLOCK_FILE, akRight | akTop);
        pAnchors->AddAnchor(hDlg, IDC_FILL_DATA_MENU, akLeft | akTop);
        pAnchors->AddAnchor(hDlg, IDC_GET_FILE_SIZE, akTop | akRightCenter);
        pAnchors->AddAnchor(hDlg, IDC_SET_FILE_POINTER, akLeftCenter | akTop);
        pAnchors->AddAnchor(hDlg, IDC_SET_END_OF_FILE, akTop | akRight);
        pAnchors->AddAnchor(hDlg, IDC_FILE_DATA, akAll);
        pAnchors->AddAnchor(hDlg, IDC_RESULT_FRAME, akLeft | akRight | akBottom);
        pAnchors->AddAnchor(hDlg, IDC_LAST_ERROR_TITLE, akLeft | akBottom);
        pAnchors->AddAnchor(hDlg, IDC_LAST_ERROR, akLeft | akRight | akBottom);
        pAnchors->AddAnchor(hDlg, IDC_IOSTATUS_INFO_TITLE, akLeft | akBottom);
        pAnchors->AddAnchor(hDlg, IDC_IOSTATUS_INFO, akLeft | akRight | akBottom);
    }

    // Allocate the initial data. Make them aligned to sector alignment
    pData->cbFileDataMax = INITIAL_DATA_BUFFER_SIZE;
    pData->pbFileData = (LPBYTE)VirtualAlloc(NULL, pData->cbFileDataMax, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
    pData->cbFileData = 0;

    // Zero the data
    if(pData->pbFileData != NULL)
        memset(pData->pbFileData, 0, pData->cbFileDataMax);

    // If there's field for data obtained by ReadFile, sets it to 8 bytes per line
    hWndChild = GetDlgItem(hDlg, IDC_FILE_DATA);
    if(hWndChild != NULL)
        DataEditor_SetBytesPerLine(hWndChild, 0x08);

    // Set initial values for file position and data
    Hex2DlgText64(hDlg, IDC_BYTE_OFFSET, 0);
    Hex2DlgText32(hDlg, IDC_LENGTH, INITIAL_DATA_BUFFER_SIZE);
    UpdateFileData(hDlg, NULL, 0, IDC_FILL_DATA_PATTERN);
    return TRUE;
}
Пример #4
0
static int OnDataPaste(HWND hDlg, PDTE_PASTE_DATA pPasteData)
{
    // Ask the user whether to cut the data or not
    if(MessageBoxRc(hDlg, IDS_QUESTION, IDS_WANT_TRIM_DATA) == IDYES)
    {
        // Paste the data to the view
        UpdateFileData(hDlg, pPasteData->szPasteText, pPasteData->PasteOffset, 0);

        // Mark the request as handled, so the data editor stops fuhrter processing
        pPasteData->bHandled = TRUE;
    }

    return TRUE;
}