-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDlgHardCfg.cpp
More file actions
126 lines (108 loc) · 2.85 KB
/
DlgHardCfg.cpp
File metadata and controls
126 lines (108 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "stdafx.h"
#include "KRS.h"
#include "DlgHardCfg.h"
IMPLEMENT_DYNAMIC(DlgHardCfg, CDialog)
static CString g_cfg_path;
DlgHardCfg::DlgHardCfg(bool save, CWnd* pParent):
CDialog(DlgHardCfg::IDD, pParent), m_save(save)
{
}
DlgHardCfg::~DlgHardCfg()
{
}
void DlgHardCfg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(DlgHardCfg, CDialog)
ON_LBN_SELCHANGE(IDC_LIST_CFGS, &DlgHardCfg::OnLbnSelchangeListCfgs)
END_MESSAGE_MAP()
BOOL DlgHardCfg::OnInitDialog()
{
CDialog::OnInitDialog();
if (m_save)
SetWindowText(" Ñîõðàíåíèå êîíôèãóðàöèè");
else
SetWindowText(" Âûáåðèòå êîíôèãóðàöèþ äëÿ âîññòàíîâëåíèÿ");
CListBox *list_box = (CListBox *)GetDlgItem(IDC_LIST_CFGS);
char str[1024];
GetCurrentDirectory(1024, str);
CString prev_dir = str;
g_cfg_path = KRS_root_path + "\\CFG";
SetCurrentDirectory(g_cfg_path);
WIN32_FIND_DATA file_data;
HANDLE file_handle = FindFirstFile("*.*", &file_data);
while (file_handle != INVALID_HANDLE_VALUE)
{
if ((file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
list_box->AddString(file_data.cFileName);
if (FindNextFile(file_handle, &file_data) == 0)
file_handle = INVALID_HANDLE_VALUE;
}
SetCurrentDirectory(prev_dir);
if (m_save)
{
SetDlgItemText(IDOK, "Ñîõðàíèòü");
SYSTEMTIME st;
GetLocalTime(&st);
CString str_date, str_time;
str_date = TXT("%d.%02d.%02d")<<st.wYear<<st.wMonth<<st.wDay;
str_time = TXT("%02d-%02d-%02d")<<st.wHour<<st.wMinute<<st.wSecond;
SetDlgItemText(IDC_EDIT_NAME, "Êîíôèãóðàöèÿ îò " + str_date + " " + str_time);
}
else
{
GetDlgItem(IDC_EDIT_NAME)->EnableWindow(FALSE);
}
return TRUE;
}
void DlgHardCfg::OnOK()
{
CListBox *list_box = (CListBox *)GetDlgItem(IDC_LIST_CFGS);
if (m_save)
{
if (GetDlgItemText(IDC_EDIT_NAME, m_cfg_name) <= 0)
{
MessageBox("Èìÿ êîíôèãóðàöèè çàäàíî íåâåðíî", "Íåäîïóñòèìîå èìÿ", MB_OK);
return;
}
CString existing_name;
for (int i = 0; i < list_box->GetCount(); i++)
{
list_box->GetText(i, existing_name);
if (m_cfg_name.CompareNoCase(existing_name) == 0)
{
MessageBox("Òàêîå èìÿ óæå ñóùåñòâóåò", "Íåäîïóñòèìîå èìÿ", MB_OK);
return;
}
}
FILE* f = fopen(m_cfg_name, "wb");
if (!f)
{
MessageBox("Íåâîçìîæíî ñîçäàòü ôàéë ñ òàêèì èìåíåì", "Íåäîïóñòèìîå èìÿ", MB_OK);
return;
}
fclose(f);
remove(m_cfg_name);
}
else
{
int selected_index = list_box->GetCurSel();
if (selected_index == -1)
{
MessageBox("Ôàéë êîíôèãóðàöèè íå âûáðàí", "Âûáåðèòå ôàéë", MB_OK);
return;
}
list_box->GetText(selected_index, m_cfg_name);
}
CDialog::OnOK();
}
void DlgHardCfg::OnLbnSelchangeListCfgs()
{
CListBox *list_box = (CListBox *)GetDlgItem(IDC_LIST_CFGS);
int selected_index = list_box->GetCurSel();
if (selected_index == -1)
return;
list_box->GetText(selected_index, m_cfg_name);
SetDlgItemText(IDC_EDIT_NAME, m_cfg_name);
}