Pushok

File browser (MODIFIED)

Mar 29th, 2011
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.51 KB | None | 0 0
  1. #include <windows.h>
  2. #include "resource.h"
  3. #include <tchar.h>
  4.  
  5. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  6.  
  7. int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
  8.     LPSTR lpCmdLine, int nCmdShow )
  9. {
  10.     MSG  msg ;    
  11.     HWND hwnd;
  12.     WNDCLASS wc;
  13.  
  14.     wc.style         = CS_HREDRAW | CS_VREDRAW;
  15.     wc.cbClsExtra    = 0;
  16.     wc.cbWndExtra    = 0;
  17.     wc.lpszClassName = TEXT( "Window" );
  18.     wc.hInstance     = hInstance ;
  19.     wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
  20.     wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU1);
  21.     wc.lpfnWndProc   = WndProc;
  22.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  23.     wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
  24.  
  25.     RegisterClass(&wc);
  26.     hwnd = CreateWindow( wc.lpszClassName, TEXT("File Manager"),
  27.         WS_SYSMENU | WS_VISIBLE,
  28.         100, 100, 320, 240, NULL, NULL, hInstance, NULL);  
  29.  
  30.     ShowWindow(hwnd, nCmdShow);
  31.     UpdateWindow(hwnd);
  32.  
  33.     while( GetMessage(&msg, NULL, 0, 0)) {
  34.         TranslateMessage(&msg);
  35.         DispatchMessage(&msg);
  36.     }
  37.     return (int) msg.wParam;
  38. }
  39.  
  40. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
  41. {
  42.     static HWND listbox;
  43.     static HWND button;
  44.     static HWND file_name;
  45.     static HWND path;
  46.     static HWND fformat;
  47.  
  48.     PAINTSTRUCT ps;
  49.     HDC hd;
  50.  
  51.     switch(msg)  
  52.     {
  53.     case WM_DESTROY:
  54.         {
  55.             PostQuitMessage(0);
  56.             return 0;
  57.         }
  58.     case WM_CREATE:
  59.         {
  60.             listbox = CreateWindow(TEXT("listbox") , NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY,
  61.                 10, 10, 293, 120, hwnd,(HMENU) 1, NULL, NULL);
  62.             button = CreateWindow(TEXT("button") , TEXT("Создать"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER,
  63.                 10, 160, 100, 25, hwnd,(HMENU) 2, NULL, NULL);
  64.             file_name = CreateWindow(TEXT("edit") , TEXT("file.txt"), WS_CHILD | WS_VISIBLE | WS_BORDER,
  65.                 203, 160, 100, 25, hwnd,(HMENU) 3, NULL, NULL);
  66.             path = CreateWindow(TEXT("edit") , TEXT("default"), WS_CHILD | WS_VISIBLE | WS_BORDER,
  67.                 10, 130, 293, 25, hwnd,(HMENU) 4, NULL, NULL);
  68.             fformat = CreateWindow(TEXT("button") , TEXT("Формат"), WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
  69.                 115, 160, 80, 25, hwnd,(HMENU) 5, NULL, NULL);
  70.             break;
  71.         }
  72.     case WM_COMMAND:
  73.         {
  74.             switch(LOWORD(wParam)){
  75.             case ID_FILE_INFO:
  76.                 {
  77.                     MessageBox(0, L"Programm by Push", L"Info", 0);
  78.                     break;
  79.                 }
  80.             case LBN_SELCHANGE:
  81.                 {
  82.                     if(HIWORD(wParam) == 1){
  83.                         TCHAR* buff[2] = {(TCHAR*)calloc(MAX_PATH, sizeof(TCHAR)), (TCHAR*)calloc(MAX_PATH, sizeof(TCHAR))};
  84.                    
  85.                         GetWindowText(path, buff[0], MAX_PATH);
  86.                         if(!_tccmp(buff[0], L"default"))
  87.                         {
  88.                             GetCurrentDirectory(MAX_PATH, buff[0]);
  89.                         }
  90.  
  91.                         SendMessage(listbox, LB_GETTEXT, SendMessage(listbox, LB_GETCURSEL, NULL, NULL), (LPARAM)buff[1]);
  92.                         if(MessageBox(hwnd, L"Вы хотите запустить этот файл?", L"Question", MB_OKCANCEL) == IDOK)
  93.                             ShellExecute(hwnd, L"open", buff[1], NULL, buff[0], SW_MAXIMIZE);
  94.                    
  95.                         free(buff[0]);
  96.                         free(buff[1]);
  97.                     }
  98.                     break;
  99.                 }
  100.             case IDM_SEARCH:
  101.                 {
  102.                     TCHAR buff[2048];
  103.                     WIN32_FIND_DATA fData = {0};
  104.                     GetWindowText(path, buff, sizeof(buff));
  105.                     if(!_tccmp(buff, L"default"))
  106.                     {
  107.                         GetCurrentDirectory(sizeof(buff), buff);
  108.                     }
  109.                     wcscat(buff, L"\\*");
  110.  
  111.                     HANDLE hFile = FindFirstFile(buff, &fData);
  112.  
  113.                     if(hFile != INVALID_HANDLE_VALUE)
  114.                         do {
  115.                             if(_tccmp(fData.cFileName, L".") && _tccmp(fData.cFileName, L".."))
  116.                                 SendMessage(listbox, LB_ADDSTRING, NULL, (LPARAM)fData.cFileName);
  117.                         }while (FindNextFile(hFile, &fData));
  118.  
  119.                     FindClose(hFile);
  120.                     break;
  121.                 }
  122.             case IDM_CLEAR_LIST:
  123.                 {
  124.                     SendMessage(listbox, LB_RESETCONTENT, 0, 0);
  125.                     break;
  126.                 }
  127.             case 5:
  128.                 {
  129.                     CheckDlgButton(hwnd, 5, IsDlgButtonChecked(hwnd, 5) ? BST_UNCHECKED : BST_CHECKED);
  130.                 }
  131.             }
  132.             if(HIWORD(wParam) == BN_CLICKED)
  133.             {
  134.                 if(LOWORD(wParam) == 2)
  135.                 {
  136.                     TCHAR* file = (TCHAR*)calloc(MAX_PATH, sizeof(TCHAR));
  137.                     DWORD dd;
  138.                     GetWindowText(file_name, file, MAX_PATH);
  139.  
  140.                     HANDLE hFile = CreateFile(file, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
  141.  
  142.                     for(WORD i=0;i < SendMessage(listbox, LB_GETCOUNT, 0, 0); i++)
  143.                     {
  144.                         TCHAR buff[1024];
  145.                         SendMessage(listbox, LB_GETTEXT, i, (LPARAM)buff);
  146.                         if(IsDlgButtonChecked(hwnd, 5))
  147.                             _ftcstok(buff, L".");
  148.                         _tcscat(buff, L"\r\n");
  149.                         WriteFile(hFile, buff, _tcsclen(buff)*sizeof(TCHAR), &dd, 0);
  150.                     }
  151.  
  152.                     CloseHandle(hFile);
  153.  
  154.                     free(file);
  155.                 }
  156.             }
  157.            
  158.             break;
  159.         }
  160.     }
  161.     return DefWindowProc(hwnd, msg, wParam, lParam);
  162. }
Advertisement
Add Comment
Please, Sign In to add comment