Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <tchar.h>
- #include <Strsafe.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include<string>
- #include<string.h>
- #include <windows.h>
- #include "resource.h"
- #include <fstream>
- #include "commctrl.h"
- #include <streambuf>
- #pragma comment(lib, "comctl32.lib")
- #include <commctrl.h>
- #include <Shlobj_core.h>
- using namespace std;
- //Конец объявления функций
- typedef struct
- {
- int number;
- char name[15];
- int count;
- } train;
- INT list_count = 0;
- train *TRAIN = (train*)malloc(sizeof(train)*list_count);
- #define ID_LISTBOX 3001
- #define ID_BUTTON_ABOUT 3002
- #define ID_BUTTON_DEL 3003
- #define ID_BUTTON_CREATE 3004
- #define ID_OPEN 3005
- #define ID_SAVE 3006
- #define ID_EXIT 3007
- #define ID_NAME_B 3008
- #define ID_NAME_Y 3009
- #define ID_CAR_B 3010
- #define ID_CAR_Y 3011
- #define ID_LISTVIEW 3012
- int RegisterParentWindowClass(void);
- void CreateGUIElements(HWND);
- BOOL CALLBACK helpProc(HWND, UINT, WPARAM, LPARAM);
- LRESULT CALLBACK ParentWndProc(HWND, UINT, WPARAM, LPARAM);
- //Путь
- string path = "*";
- char ParentClassName[] = "ParentWindowClass";
- HINSTANCE hInstance;
- HWND hwnd_main;
- HMENU hMenu, hFileMenu, hSortMenu;
- HWND hButtonAdd, hButtonCreate, hButtonDelete, hListBox, hEditCar, hEditName, hEditNumber, hListView;
- INT num = -1, N = -1, A = 0;
- CHAR buffer[100], buf1[40], buf2[40];
- CHAR szSymbol[1];
- CHAR nameFile[] = "data.bin";
- CHAR add[35] = "";
- DWORD amount = 1;
- void AddColToListView(char *st, int sub, int size)
- {
- LVCOLUMN lvc;
- lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
- lvc.iSubItem = sub;
- lvc.pszText = st;
- lvc.cx = size;
- lvc.fmt = LVCFMT_LEFT;
- ListView_InsertColumn(hListView, sub, &lvc);
- }
- int i;
- BOOL InitListViewImageLists(HWND hWndListView, int size)
- {
- HIMAGELIST hSmall;
- SHFILEINFO lp;
- hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, size, 1);
- WIN32_FIND_DATA FindFileData;
- HANDLE hFind;
- hFind = FindFirstFile(path.c_str(), &FindFileData);
- if (hFind == INVALID_HANDLE_VALUE) {
- MessageBox(0, "Ошибка", "Не найден", MB_OK | MB_ICONWARNING);
- }
- else
- {
- do {//присваеваем атрибуты
- if (FindFileData.cFileName == ".") {//если диск
- char buf1[MAX_PATH] = "C:\\*";
- strcat(buf1, (char*)FindFileData.cFileName);
- }
- if (FindFileData.cFileName == "..") {//если фаилы,папки
- char buf1[MAX_PATH] = "C:\\*";
- strcat(buf1, (char*)FindFileData.cFileName);
- }
- } while (FindNextFile(hFind, &FindFileData) != 0);
- FindClose(hFind);
- }
- ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL);
- return TRUE;
- }
- void Viev_List(char *buf, HWND hList, int i) {
- LVITEM lvItem;
- lvItem.mask = LVIF_IMAGE | LVIF_TEXT;
- lvItem.state = 0;
- lvItem.stateMask = 0;
- lvItem.iItem = i;
- lvItem.iImage = i;
- lvItem.iSubItem = 0;
- lvItem.pszText = buf;
- lvItem.cchTextMax = sizeof(buf);
- ListView_InsertItem(hList, &lvItem);
- }
- void FindFile(HWND hList)
- {
- //Очистка ListView
- ListView_DeleteAllItems(hList);
- SendMessage(hList, LVM_DELETEALLITEMS, (WPARAM)0, (LPARAM)0);
- i = 0;
- WIN32_FIND_DATA FindFileData;
- HANDLE hFind;
- hFind = FindFirstFile(path.c_str(), &FindFileData);
- if (hFind == INVALID_HANDLE_VALUE) {
- MessageBox(0, "Ошибка", "Не найден", MB_OK | MB_ICONWARNING);
- }
- else
- {
- do {
- Viev_List((char*)FindFileData.cFileName, hList, i);//выз. ф-ция Viev_List передаем туда наиденый фаил ,и HWND ListBox и итератор i++,
- ++i;
- } while (FindNextFile(hFind, &FindFileData) != 0);
- FindClose(hFind); //закрываем работу поиска фаилов
- InitListViewImageLists(hList, i);//тут уже передаем HWND ListBox, и кол-во фаилов
- }
- }
- int RegisterParentWindowClass(void)
- {
- WNDCLASS wc;
- memset(&wc, 0, sizeof(WNDCLASS));
- wc.style = CS_VREDRAW | CS_HREDRAW;
- wc.lpfnWndProc = ParentWndProc;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = ParentClassName;
- return RegisterClass(&wc);
- }
- int WINAPI WinMain(HINSTANCE hIns, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
- {
- hInstance = hIns;
- if (!RegisterParentWindowClass()) return -1;
- hwnd_main = CreateWindow(ParentClassName, "14 Вариант",
- WS_SYSMENU | WS_OVERLAPPED | WS_BORDER | DS_CENTER,
- 500, 300, 500, 300, NULL, NULL, hInstance, 0);
- if (!hwnd_main) return 0;
- ShowWindow(hwnd_main, SW_SHOW);
- UpdateWindow(hwnd_main);
- MSG msg;
- while (GetMessage(&msg, 0, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 0;
- }
- LRESULT CALLBACK ParentWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- HMENU ContextMenu;
- switch (message) {
- case WM_CREATE:
- {
- RECT rect;
- GetWindowRect(hwnd, &rect);
- LONG width = rect.right - rect.left;
- LONG height = rect.bottom - rect.top;
- hButtonAdd = CreateWindow(TEXT("button"), "?", WS_CHILD | WS_VISIBLE,
- 450, 10, 20, 20, hwnd, (HMENU)ID_BUTTON_ABOUT, hInstance, 0);
- hButtonCreate = CreateWindow(TEXT("button"), "Архивировать", WS_CHILD | WS_VISIBLE,
- width / 2 - 70, height - 110, 130, 30, hwnd, (HMENU)ID_BUTTON_CREATE, hInstance, 0);
- hButtonDelete = CreateWindow(TEXT("button"), "Разархивировать", WS_CHILD | WS_VISIBLE,
- width - 165, height - 110, 130, 30, hwnd, (HMENU)ID_BUTTON_DEL, hInstance, 0);
- InitCommonControls();
- hListView = CreateWindowEx(WS_EX_CLIENTEDGE | LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT, WC_LISTVIEW, (LPCTSTR)NULL,
- WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL, 20, 35, width - 55, height - 150, hwnd, (HMENU)NULL,
- hInstance, (LPVOID)NULL);
- SendMessage(hListBox, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), true);
- ListView_SetExtendedListViewStyleEx(hListBox, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
- AddColToListView("Имя", 1, 100);
- AddColToListView("Тип", 2, 50);
- AddColToListView("Размер", 3, 50);
- AddColToListView("Дата", 4, 70);
- AddColToListView("Атрибуты", 5, 50);
- FindFile(hListView);
- //SHOW LISTBOX
- /*ShowWindow(hListBox, SW_SHOWDEFAULT);*/
- hMenu = CreateMenu();
- hFileMenu = CreatePopupMenu();
- hSortMenu = CreatePopupMenu();
- AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hFileMenu, "Файл");
- {
- AppendMenu(hFileMenu, MF_STRING, ID_OPEN, "Открыть");
- AppendMenu(hFileMenu, MF_STRING, ID_SAVE, "Сохранить");
- AppendMenu(hFileMenu, MF_SEPARATOR, NULL, "");
- AppendMenu(hFileMenu, MF_STRING, ID_EXIT, "Выход");
- }
- SetMenu(hwnd, hMenu);
- break;
- }
- case WM_CONTEXTMENU: {
- ContextMenu = CreatePopupMenu();
- POINT cp;
- GetCursorPos(&cp);
- AppendMenu(ContextMenu, MF_STRING | MF_POPUP, 3008, TEXT("Добавить"));
- AppendMenu(ContextMenu, MF_STRING | MF_POPUP, 3009, TEXT("Изменить"));
- AppendMenu(ContextMenu, MF_STRING | MF_POPUP, 3010, TEXT("Удалить"));
- TrackPopupMenu(ContextMenu, TPM_RIGHTBUTTON, cp.x, cp.y, 1, hwnd, 0);
- break;
- }
- case WM_COMMAND: {
- switch (LOWORD(wParam)) {
- case ID_BUTTON_ABOUT:
- {
- MessageBox(hwnd, "Hi!", "About Us", MB_OK | MB_ICONEXCLAMATION);
- break;
- }
- case ID_EXIT:
- {
- PostQuitMessage(0);
- free(TRAIN);
- break;
- }
- case ID_OPEN: {
- break;
- }
- }
- break;
- }
- case WM_DESTROY:
- PostQuitMessage(0);
- free(TRAIN);
- break;
- default: return DefWindowProc(hwnd, message, wParam, lParam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement