#include <windows.h>
#include "resource.h"
#include <tchar.h>
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);
}
Comments