目前共有9篇帖子。 內容轉換:不轉換▼
 
點擊 回復
297 8
【原创作品】文件数据分布图查看器V1.0
一派護法 十九級
1樓 發表于:2016-2-24 23:11




一派護法 十九級
2樓 發表于:2016-2-24 23:13
Windows 7系统下的运行效果:
一派護法 十九級
3樓 發表于:2016-2-24 23:16
【程序主要功能】
将打开的文件数据当作位图显示,文件中每三个字节代表一个像素的颜色。
支持位图显示宽度的调整,支持大文件的读取。
一派護法 十九級
4樓 發表于:2016-2-25 11:26

XP下的shell32.dll的文件图像中还藏有很多Windows徽标哦!
把窗口宽度设为968或969就能看到了。
一派護法 十九級
5樓 發表于:2016-2-25 11:34
一派護法 十九級
6樓 發表于:2016-2-25 11:35
【程序源代码】
【头文件】
#define SCROLL_LINE 40

INT_PTR CALLBACK AboutProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK SizeDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void calc_view_pos(POINT *pt, SIZE *size);
void file_init(void);
void open_file(void);
void toolbar_init(void);
void statusbar_init(void);
void update_color_text(void);
void update_color_text(int x, int y, LPTSTR szText, size_t nTextMaxLen);
void update_menu(void);
void update_scrollbar(void);
void view_init(void);
void view_resize(RECT *rcClient);
一派護法 十九級
7樓 發表于:2016-2-25 11:35
【源文件】
#include <fstream>
#include <Shlwapi.h>
#include <tchar.h>
#include <Windows.h>
#include <windowsx.h>
#include <CommCtrl.h>
#include "resource.h"
#include "main.h"

#pragma comment(lib, "Comctl32.lib")
#pragma comment(lib, "Shlwapi.lib")
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

using namespace std;

BOOL bEndian = FALSE;
BOOL bMouseTracking = FALSE;
DWORD64 dwFileSize = 0;
HINSTANCE hInst;
HWND hWnd, hwndToolbar, hwndStatus, hwndView;
TCHAR szFileName[MAX_PATH];
UINT wIDs[] = {MH_BASE, IDS_STRING30000, 0, 0};

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    BOOL bFound = FALSE;
    int nArgs;
    LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
    LPWSTR szWarning = NULL;
    if (nArgs >= 2)
    {
        if (PathFileExistsW(szArglist[1]) && !PathIsDirectoryW(szArglist[1]))
        {
#ifdef _UNICODE
            _tcscpy_s(szFileName, szArglist[1]);
#else
            WideCharToMultiByte(CP_ACP, NULL, szArglist[1], -1, szFileName, sizeof(szFileName), NULL, NULL);
#endif
            bFound = TRUE;
        }
        else
        {
            szWarning = new WCHAR[MAX_PATH + 120];
            if (wcslen(szArglist[1]) >= MAX_PATH)
                wcscpy_s(szWarning, MAX_PATH, L"指定的文件路径太长!");
            else
                swprintf_s(szWarning, MAX_PATH + 120, L"文件 \"%s\" 不存在。\n请检查文件名是否正确,然后再试一次。", szArglist[1]);
        }
    }
    if (bFound == FALSE)
        GetModuleFileName(NULL, szFileName, MAX_PATH);
    LocalFree(szArglist);

    WNDCLASSEX wcex;
    wcex.cbClsExtra = wcex.cbWndExtra = 0;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hInstance = hInst = hInstance;
    wcex.lpfnWndProc = WndProc;
    wcex.lpszClassName = TEXT("MainWindow");
    wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
    wcex.style = NULL;
    RegisterClassEx(&wcex);

    HWND hWnd = CreateWindow(wcex.lpszClassName, TEXT("Pixel Viewer"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
    if (!hWnd)
        return 1;

    if (szWarning != NULL)
    {
        MessageBoxW(hWnd, szWarning, L"打开文件失败", MB_ICONWARNING);
        delete[] szWarning;
    }
   
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    HACCEL hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(hWnd, hAccel, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    return msg.wParam;
}

INT_PTR CALLBACK AboutProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    int wmId;
    switch (uMsg)
    {
    case WM_COMMAND:
        wmId = LOWORD(wParam);
        switch (wmId)
        {
        case IDOK:
        case IDCANCEL:
            EndDialog(hDlg, wmId);
            break;
        }
        break;
    case WM_INITDIALOG:
        SendDlgItemMessage(hDlg, IDC_ICON1, STM_SETICON, (WPARAM)GetClassLongPtr(hWnd, GCLP_HICON), NULL);
        return TRUE;
    }
    return FALSE;
}

INT_PTR CALLBACK SizeDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    int wmId;
    RECT rect, rcView, rcClient;
    switch (uMsg)
    {
    case WM_COMMAND:
        wmId = LOWORD(wParam);
        switch (wmId)
        {
        case IDOK:
            rcClient.top = rcClient.left = 0;
            rcClient.right = SendDlgItemMessage(hDlg, IDC_SPIN1, UDM_GETPOS32, NULL, NULL);
            rcClient.bottom = SendDlgItemMessage(hDlg, IDC_SPIN2, UDM_GETPOS32, NULL, NULL);

            GetWindowRect(hwndToolbar, &rect);
            rcClient.bottom += rect.bottom - rect.top - 1;
            GetWindowRect(hwndStatus, &rect);
            rcClient.bottom += rect.bottom - rect.top;

            GetWindowRect(hWnd, &rect);
            AdjustWindowRect(&rcClient, WS_OVERLAPPEDWINDOW, TRUE);
            MoveWindow(hWnd, rect.left, rect.top, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top, TRUE);
        case IDCANCEL:
            EndDialog(hDlg, wmId);
            break;
        }
        break;
    case WM_INITDIALOG:
        GetClientRect(hwndView, &rcView);
        GetClientRect(hWnd, &rcClient);
        SendDlgItemMessage(hDlg, IDC_SPIN1, UDM_SETRANGE32, 0, (LPARAM)(GetSystemMetrics(SM_CXSCREEN) * 1.5));
        SendDlgItemMessage(hDlg, IDC_SPIN2, UDM_SETRANGE32, 0, (LPARAM)(GetSystemMetrics(SM_CYSCREEN) * 1.5));
        SendDlgItemMessage(hDlg, IDC_SPIN1, UDM_SETPOS32, NULL, rcClient.right - rcClient.left);
        SendDlgItemMessage(hDlg, IDC_SPIN2, UDM_SETPOS32, NULL, rcView.bottom - rcView.top);
        return TRUE;
    }
    return FALSE;
}

LRESULT CALLBACK ViewWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BITMAPINFO bmi;
    BYTE *p, *pBits;
    BYTE bTemp;
    HBITMAP hbmp;
    HBRUSH hbrBackground;
    HDC hdc, hdcMem;
    ifstream *file;
    int x, y;
    int nLineLen, nNewPos, nOldVertPos;
    PAINTSTRUCT ps;
    RECT rcClient, rcMem;
    SCROLLINFO si;
    TCHAR szText[50];
    TRACKMOUSEEVENT tme;
    UINT uTemp, offsetY;

    switch (uMsg)
    {
    case WM_ERASEBKGND:
        // 重绘窗口时不自动擦除内容
        break;
    case WM_MOUSELEAVE:
        SendMessage(hwndStatus, SB_SETTEXT, 1, NULL);
        SendMessage(hwndStatus, SB_SETTEXT, 2, NULL);
        bMouseTracking = FALSE;
        break;
    case WM_MOUSEMOVE:
        if (bMouseTracking == FALSE)
        {
            tme.cbSize = sizeof(TRACKMOUSEEVENT);
            tme.dwFlags = TME_LEAVE;
            tme.hwndTrack = hWnd;
            _TrackMouseEvent(&tme);
            bMouseTracking = TRUE;
        }
        x = GET_X_LPARAM(lParam);
        y = GET_Y_LPARAM(lParam);
        _stprintf_s(szText, TEXT("(%d, %d)"), x, y);
        SendMessage(hwndStatus, SB_SETTEXT, 1, (LPARAM)szText);
        update_color_text(x, y, szText, sizeof(szText) / sizeof(TCHAR));
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);

        GetClientRect(hWnd, &rcClient);
        SetRect(&rcMem, 0, 0, ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top);
        if (rcMem.bottom > 0)
        {
            ZeroMemory(&bmi, sizeof(BITMAPINFO));
            bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
            bmi.bmiHeader.biWidth = rcMem.right;
            bmi.bmiHeader.biHeight = rcMem.bottom;
            bmi.bmiHeader.biPlanes = 1;
            bmi.bmiHeader.biBitCount = 24;
            bmi.bmiHeader.biCompression = BI_RGB;
            hbmp = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (LPVOID *)&pBits, NULL, NULL);
            hdcMem = CreateCompatibleDC(hdc);
            SelectObject(hdcMem, hbmp);
       
            hbrBackground = (HBRUSH)GetClassLongPtr(hWnd, GCLP_HBRBACKGROUND);
            FillRect(hdcMem, &rcMem, hbrBackground);
            offsetY = GetScrollPos(hWnd, SB_VERT);

            if (PathFileExists(szFileName))
            {
                file = new ifstream(szFileName, ios::binary);
                for (y = 0; y < rcMem.bottom; y++)
                {
                    file->seekg((offsetY + ps.rcPaint.top + y) * (rcClient.right - rcClient.left) * 3 + ps.rcPaint.left * 3, ios::beg);
                    if (file->eof())
                        break;
                       
                    uTemp = rcMem.bottom - y - 1;
                    nLineLen = rcMem.right * 3;
                    if (nLineLen % 4 != 0)
                        nLineLen += 4 - nLineLen % 4;
                    p = pBits + uTemp * nLineLen;
                    file->read((char *)p, rcMem.right * 3);
                   
                    if (bEndian == TRUE) // big
                    {
                        for (x = 0; x < rcMem.right; x++)
                        {
                            bTemp = *p;
                            *p = *(p + 2);
                            *(p + 2) = bTemp;
                            p += 3;
                        }
                    }
                }
                file->close();
                delete file;
            }
       
            BitBlt(hdc, ps.rcPaint.left, ps.rcPaint.top, rcMem.right, rcMem.bottom, hdcMem, 0, 0, SRCCOPY);
            DeleteDC(hdcMem);
            DeleteObject(hbmp);
        }

        EndPaint(hWnd, &ps);
        break;
    case WM_VSCROLL:
        si.cbSize = sizeof(SCROLLINFO);
        si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS;
        GetScrollInfo(hWnd, SB_VERT, &si);
        switch (LOWORD(wParam))
        {
        case SB_TOP:
            nNewPos = si.nMin;
            break;
        case SB_LINEUP:
            nNewPos = si.nPos - SCROLL_LINE;
            break;
        case SB_LINEDOWN:
            nNewPos = si.nPos + SCROLL_LINE;
            break;
        case SB_PAGEUP:
            nNewPos = si.nPos - si.nPage;
            break;
        case SB_PAGEDOWN:
            nNewPos = si.nPos + si.nPage;
            break;
        case SB_BOTTOM:
            nNewPos = si.nMax;
            break;
        case SB_THUMBTRACK:
            nNewPos = si.nTrackPos;
            break;
        default:
            return FALSE;
        }
        nOldVertPos = SetScrollPos(hWnd, SB_VERT, nNewPos, TRUE);
        nNewPos = GetScrollPos(hWnd, SB_VERT);
        if (nNewPos != nOldVertPos)
            InvalidateRect(hWnd, NULL, FALSE);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    return FALSE;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    int aParts[3];
    int nLines, nNewPos, nOldVertPos;
    int wmId;
    RECT rcClient;
    ULONG ulScrollLines;

    switch (uMsg)
    {
    case WM_COMMAND:
        wmId = LOWORD(wParam);
        switch (wmId)
        {
        case IDM_OPEN:
            open_file();
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, AboutProc);
            break;
        case IDM_BE:
            if (bEndian == FALSE)
            {
                bEndian = TRUE;
                update_menu();
                InvalidateRect(hwndView, NULL, FALSE);
            }
            break;
        case IDM_LE:
            if (bEndian == TRUE)
            {
                bEndian = FALSE;
                update_menu();
                InvalidateRect(hwndView, NULL, FALSE);
            }
            break;
        case IDM_CHANGESIZE:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, SizeDlgProc);
            break;
        }
        break;
    case WM_CREATE:
        ::hWnd = hWnd; // 此时,主函数的CreateWindow函数还未返回,所以只能从参数里获得hWnd
        toolbar_init();
        statusbar_init();
        update_menu();
        file_init();
        view_init();
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_MENUSELECT:
        MenuHelp(WM_MENUSELECT, wParam, lParam, GetMenu(hWnd), hInst, hwndStatus, wIDs);
        break;
    case WM_MOUSEWHEEL:
        SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &ulScrollLines, NULL);
        nLines = GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA * ulScrollLines;
        nNewPos = GetScrollPos(hwndView, SB_VERT) - nLines * SCROLL_LINE;
        nOldVertPos = SetScrollPos(hwndView, SB_VERT, nNewPos, TRUE);
        nNewPos = GetScrollPos(hwndView, SB_VERT);
        if (nOldVertPos != nNewPos)
        {
            InvalidateRect(hwndView, NULL, FALSE);
            update_color_text();
        }
        break;
    case WM_SIZE:
        SetRect(&rcClient, 0, 0, LOWORD(lParam), HIWORD(lParam));
        SendMessage(hwndToolbar, TB_AUTOSIZE, NULL, NULL);
        SendMessage(hwndStatus, WM_SIZE, NULL, NULL);
        aParts[0] = rcClient.right - 300;
        if (aParts[0] < 200)
            aParts[0] = 200;
        aParts[1] = aParts[0] + 100;
        aParts[2] = -1;
        SendMessage(hwndStatus, SB_SETPARTS, 3, (LPARAM)aParts);
        SendMessage(hwndStatus, SB_SETTEXT, 0, (LPARAM)TEXT("就绪"));
        view_resize(&rcClient);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    return FALSE;
}

void calc_view_pos(POINT *pt, SIZE *size)
{
    RECT rcClient, rcToolbarWnd, rcStatusbarWnd;
    GetClientRect(hWnd, &rcClient);
    GetWindowRect(hwndToolbar, &rcToolbarWnd);
    GetWindowRect(hwndStatus, &rcStatusbarWnd);
    pt->x = 0;
    pt->y = rcToolbarWnd.bottom - rcToolbarWnd.top - 1;
    size->cx = rcClient.right - rcClient.left;
    size->cy = rcStatusbarWnd.top - rcToolbarWnd.bottom;
}

void file_init(void)
{
    int i = _tcslen(szFileName);
    TCHAR szTitle[MAX_PATH];
    for (; i >= 0; i--)
    {
        if (szFileName[i] == '\\' || szFileName[i] == '/' || szFileName[i] == ':')
            break;
    }
    _tcscpy_s(szTitle, szFileName + i + 1);
    _tcscat_s(szTitle, TEXT(" - Pixel Viewer"));
    SetWindowText(hWnd, szTitle);

    if (PathFileExists(szFileName))
    {
        ifstream file(szFileName, ios::binary);
        file.seekg(0, ios::end);
        dwFileSize = file.tellg();
        file.close();
    }
}

void open_file(void)
{
    OPENFILENAME ofn;
    TCHAR szFile[MAX_PATH] = {0};
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hWnd;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = TEXT("所有文件\0*\0");
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    if (GetOpenFileName(&ofn) == TRUE)
    {
        _tcscpy_s(szFileName, szFile);
        file_init();
        update_scrollbar();
    }
}

void toolbar_init(void)
{
    TBBUTTON tbButtons[] = {
        {STD_FILENEW, IDM_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, NULL, NULL, NULL, (INT_PTR)TEXT("打开")},
        {NULL, NULL, TBSTATE_ENABLED, BTNS_SEP, NULL, NULL}, // 显示分隔条需要TBSTYLE_FLAT样式
        {STD_HELP, IDM_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, NULL, NULL, NULL, (INT_PTR)TEXT("关于")}
    };

    hwndToolbar = CreateWindow(TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS, 0, 0, 0, 0, hWnd, NULL, hInst, NULL);
    SendMessage(hwndToolbar, TB_LOADIMAGES, IDB_STD_SMALL_COLOR, (LPARAM)HINST_COMMCTRL);
   
    SendMessage(hwndToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), NULL);
    SendMessage(hwndToolbar, TB_SETMAXTEXTROWS, 0, NULL);
    SendMessage(hwndToolbar, TB_ADDBUTTONS, 3, (LPARAM)tbButtons);
}

void statusbar_init(void)
{
    hwndStatus = CreateWindow(STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0, hWnd, NULL, hInst, NULL);
}

void update_color_text(void)
{
    TCHAR szText[50];
    POINT pt;
    GetCursorPos(&pt);
    ScreenToClient(hwndView, &pt);
    update_color_text(pt.x, pt.y, szText, sizeof(szText) / sizeof(TCHAR));
}

void update_color_text(int x, int y, LPTSTR szText, size_t nTextMaxLen)
{
    HDC hdc = GetDC(hwndView);
    COLORREF color = GetPixel(hdc, x, y);
    ReleaseDC(hwndView, hdc);

    RECT rect;
    DWORD64 dwFilePos = GetScrollPos(hwndView, SB_VERT);
    GetClientRect(hwndView, &rect);
    dwFilePos = (dwFilePos + y) * (rect.right - rect.left) + x;
    dwFilePos *= 3;
    if (dwFilePos >= dwFileSize)
    {
        SendMessage(hwndStatus, SB_SETTEXT, 2, NULL);
        return;
    }

    if (bEndian == TRUE)
        color = RGB(GetBValue(color), GetGValue(color), GetRValue(color));
    _stprintf_s(szText, nTextMaxLen, TEXT("0x%08I64X: 0x%06X"), dwFilePos, color);
    SendMessage(hwndStatus, SB_SETTEXT, 2, (LPARAM)szText);
}

void update_menu(void)
{
    HMENU hMenu = GetMenu(hWnd);
    HMENU hSubMenu = GetSubMenu(hMenu, 1);
    CheckMenuRadioItem(hSubMenu, IDM_LE, IDM_BE, (bEndian == TRUE) ? IDM_BE : IDM_LE, MF_BYCOMMAND);
}

void update_scrollbar(void)
{
    RECT rcView;
    GetClientRect(hwndView, &rcView);
    if (rcView.right == 0)
        return;
   
    RECT rect;
    SCROLLINFO si;
    SetScrollRange(hwndView, SB_VERT, 0, (int)ceil(dwFileSize / (rcView.right * 3)), FALSE);
    do
    {
        rect = rcView;
        si.cbSize = sizeof(SCROLLINFO);
        si.fMask = SIF_PAGE;
        si.nPage = rect.bottom - rect.top;
        SetScrollInfo(hwndView, SB_VERT, &si, TRUE);
        GetClientRect(hwndView, &rcView);
    } while (memcmp(&rcView, &rect, sizeof(RECT)) != 0);
    InvalidateRect(hwndView, NULL, FALSE);
}

void view_init(void)
{
    POINT pt;
    SIZE size;
    calc_view_pos(&pt, &size);

    WNDCLASS wcView;
    ZeroMemory(&wcView, sizeof(WNDCLASS));
    wcView.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcView.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcView.hInstance = hInst;
    wcView.lpfnWndProc = ViewWndProc;
    wcView.lpszClassName = TEXT("PixelViewer View");
    RegisterClass(&wcView);

    hwndView = CreateWindow(wcView.lpszClassName, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL, pt.x, pt.y, size.cx, size.cy, hWnd, NULL, wcView.hInstance, NULL);
}

void view_resize(RECT *rcClient)
{
    POINT pt;
    SIZE size;
    calc_view_pos(&pt, &size);
    MoveWindow(hwndView, pt.x, pt.y, size.cx, size.cy, TRUE);
    update_scrollbar();
}
一派護法 十九級
8樓 發表于:2016-2-25 11:36
【资源头文件】
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 PixelViewer.rc 使用
//
#define MH_BASE                         100
#define IDR_MENU1                       101
#define IDR_ACCELERATOR1                102
#define IDD_DIALOG1                     103
#define IDD_DIALOG2                     104
#define IDC_ICON1                       1001
#define IDC_EDIT1                       1002
#define IDC_SPIN1                       1003
#define IDC_EDIT2                       1004
#define IDC_SPIN2                       1005
#define IDS_STRING30000                 30000
#define IDS_STRING30001                 30001
#define IDS_STRING30002                 30002
#define IDM_EXIT                        40003
#define IDM_OPEN                        40004
#define IDM_ABOUT                       40006
#define IDM_LE                          40012
#define IDM_BE                          40013
#define IDM_CHANGESIZE                  40015
#define IDS_STRING40103                 40103
#define IDS_STRING40104                 40104
#define IDS_STRING40106                 40106
#define IDS_STRING40112                 40112
#define IDS_STRING40113                 40113
#define IDS_STRING40115                 40115

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        109
#define _APS_NEXT_COMMAND_VALUE         40018
#define _APS_NEXT_CONTROL_VALUE         1006
#define _APS_NEXT_SYMED_VALUE           102
#endif
#endif

一派護法 十九級
9樓 發表于:2016-2-25 11:37
【资源文件】
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDR_MENU1 MENU
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "打开(&O)...\tCtrl+O",           IDM_OPEN
        MENUITEM SEPARATOR
        MENUITEM "退出(&E)",                      IDM_EXIT
    END
    POPUP "查看(&V)"
    BEGIN
        MENUITEM "小端字节序(&L)",                   IDM_LE
        MENUITEM "大端字节序(&B)",                   IDM_BE
        MENUITEM SEPARATOR
        MENUITEM "更改窗口大小(&C)...",               IDM_CHANGESIZE
    END
    POPUP "帮助(&H)"
    BEGIN
        MENUITEM "关于(&A)...\tAlt+/",            IDM_ABOUT
    END
END


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG1 DIALOGEX 20, 20, 175, 77
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于 Pixcel Viewer"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    ICON            "",IDC_ICON1,7,8,21,20
    LTEXT           "Pixcel Viewer, 版本 V1.0",IDC_STATIC,38,10,85,8
    LTEXT           "作者: 巨大八爪鱼",IDC_STATIC,38,22,62,8
    LTEXT           "Copyright (C) Octopus Studio 2016",IDC_STATIC,38,39,113,8
    DEFPUSHBUTTON   "确定",IDOK,119,56,50,14
END

IDD_DIALOG2 DIALOGEX 20, 20, 161, 82
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "更改窗口大小"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    GROUPBOX        "新窗口尺寸",IDC_STATIC,7,7,147,49
    EDITTEXT        IDC_EDIT1,22,26,40,14,ES_AUTOHSCROLL
    CONTROL         "",IDC_SPIN1,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,61,25,10,14
    LTEXT           "x",IDC_STATIC,74,28,8,8
    EDITTEXT        IDC_EDIT2,86,26,40,14,ES_AUTOHSCROLL
    CONTROL         "",IDC_SPIN2,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,128,25,10,14
    DEFPUSHBUTTON   "确定",IDOK,50,61,50,14
    PUSHBUTTON      "取消",IDCANCEL,104,61,50,14
END


/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDR_ACCELERATOR1 ACCELERATORS
BEGIN
    "/",            IDM_ABOUT,              ASCII,  ALT, NOINVERT
    "O",            IDM_OPEN,               VIRTKEY, CONTROL, NOINVERT
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 168
        TOPMARGIN, 7
        BOTTOMMARGIN, 70
    END

    IDD_DIALOG2, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 154
        TOPMARGIN, 7
        BOTTOMMARGIN, 75
    END
END
#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x0L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
        BEGIN
            VALUE "CompanyName", "八爪鱼工作室"
            VALUE "FileDescription", "文件数据分布图查看器"
            VALUE "FileVersion", "1.0.0.1"
            VALUE "InternalName", "Pixel Viewer"
            VALUE "LegalCopyright", "Copyright (C)Octopus Studio 2016"
            VALUE "OriginalFilename", "pixelviewer.exe"
            VALUE "ProductName", "Pixel Viewer"
            VALUE "ProductVersion", "1.0.0.1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200
    END
END


/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE
BEGIN
    IDS_STRING40103         "退出程序。"
    IDS_STRING40104         "打开一个文件。"
    IDS_STRING40106         "显示关于本程序的一些详细信息。"
END

STRINGTABLE
BEGIN
    IDS_STRING40112         "以""蓝、绿、红""的字节顺序显示颜色。"
    IDS_STRING40113         "以""红、绿、蓝""的字节顺序显示颜色。"
    IDS_STRING40115         "更改窗口大小和图像的显示大小。"
END

STRINGTABLE
BEGIN
    IDS_STRING30000         "文件菜单"
    IDS_STRING30001         "查看菜单"
    IDS_STRING30002         "帮助菜单"
END

#endif    // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED


回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:297 回複數:8
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-2-25 11:37
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。