#include #include "resource.h" #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MSG msg ; HWND hwnd; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.lpszClassName = TEXT( "Window" ); wc.hInstance = hInstance ; wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wc.lpfnWndProc = WndProc; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); RegisterClass(&wc); hwnd = CreateWindow( wc.lpszClassName, TEXT("File Manager"), WS_SYSMENU | WS_VISIBLE, 100, 100, 320, 240, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while( GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int) msg.wParam; } LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { static HWND listbox; static HWND button; static HWND file_name; static HWND path; static HWND fformat; PAINTSTRUCT ps; HDC hd; switch(msg) { case WM_DESTROY: { PostQuitMessage(0); return 0; } case WM_CREATE: { listbox = CreateWindow(TEXT("listbox") , NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY, 10, 10, 293, 120, hwnd,(HMENU) 1, NULL, NULL); button = CreateWindow(TEXT("button") , TEXT("Создать"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER, 10, 160, 100, 25, hwnd,(HMENU) 2, NULL, NULL); file_name = CreateWindow(TEXT("edit") , TEXT("file.txt"), WS_CHILD | WS_VISIBLE | WS_BORDER, 203, 160, 100, 25, hwnd,(HMENU) 3, NULL, NULL); path = CreateWindow(TEXT("edit") , TEXT("default"), WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 130, 293, 25, hwnd,(HMENU) 4, NULL, NULL); fformat = CreateWindow(TEXT("button") , TEXT("Формат"), WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 115, 160, 80, 25, hwnd,(HMENU) 5, NULL, NULL); break; } case WM_COMMAND: { switch(LOWORD(wParam)){ case ID_FILE_INFO: { MessageBox(0, L"Programm by Push", L"Info", 0); break; } case LBN_SELCHANGE: { if(HIWORD(wParam) == 1){ TCHAR* buff[2] = {(TCHAR*)calloc(MAX_PATH, sizeof(TCHAR)), (TCHAR*)calloc(MAX_PATH, sizeof(TCHAR))}; GetWindowText(path, buff[0], MAX_PATH); if(!_tccmp(buff[0], L"default")) { GetCurrentDirectory(MAX_PATH, buff[0]); } SendMessage(listbox, LB_GETTEXT, SendMessage(listbox, LB_GETCURSEL, NULL, NULL), (LPARAM)buff[1]); if(MessageBox(hwnd, L"Вы хотите запустить этот файл?", L"Question", MB_OKCANCEL) == IDOK) ShellExecute(hwnd, L"open", buff[1], NULL, buff[0], SW_MAXIMIZE); free(buff[0]); free(buff[1]); } break; } case IDM_SEARCH: { TCHAR buff[2048]; WIN32_FIND_DATA fData = {0}; GetWindowText(path, buff, sizeof(buff)); if(!_tccmp(buff, L"default")) { GetCurrentDirectory(sizeof(buff), buff); } wcscat(buff, L"\\*"); HANDLE hFile = FindFirstFile(buff, &fData); if(hFile != INVALID_HANDLE_VALUE) do { if(_tccmp(fData.cFileName, L".") && _tccmp(fData.cFileName, L"..")) SendMessage(listbox, LB_ADDSTRING, NULL, (LPARAM)fData.cFileName); }while (FindNextFile(hFile, &fData)); FindClose(hFile); break; } case IDM_CLEAR_LIST: { SendMessage(listbox, LB_RESETCONTENT, 0, 0); break; } case 5: { CheckDlgButton(hwnd, 5, IsDlgButtonChecked(hwnd, 5) ? BST_UNCHECKED : BST_CHECKED); } } if(HIWORD(wParam) == BN_CLICKED) { if(LOWORD(wParam) == 2) { TCHAR* file = (TCHAR*)calloc(MAX_PATH, sizeof(TCHAR)); DWORD dd; GetWindowText(file_name, file, MAX_PATH); HANDLE hFile = CreateFile(file, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); for(WORD i=0;i < SendMessage(listbox, LB_GETCOUNT, 0, 0); i++) { TCHAR buff[1024]; SendMessage(listbox, LB_GETTEXT, i, (LPARAM)buff); if(IsDlgButtonChecked(hwnd, 5)) _ftcstok(buff, L"."); _tcscat(buff, L"\r\n"); WriteFile(hFile, buff, _tcsclen(buff)*sizeof(TCHAR), &dd, 0); } CloseHandle(hFile); free(file); } } break; } } return DefWindowProc(hwnd, msg, wParam, lParam); }