  | 
      
        
          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(); }
  
       | 
    
    
        | 
      
        
          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
 
 
  
       |