Repository navigation
Expand file tree
/
Copy pathSource.cpp
More file actions
77 lines (60 loc) · 2.45 KB
/
Copy pathSource.cpp
File metadata and controls
77 lines (60 loc) · 2.45 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
#include <wx/wx.h>
#include <wx/fileconf.h>
#include <wx/stdpaths.h>
#include <wx/filename.h>
#include <locale>
#include <memory>
#ifdef __WXMSW__
#include <fcntl.h>
#include <io.h>
#endif
class MyApp : public wxApp {
private:
wxLocale m_locale; // Держим локаль в объекте класса
public:
virtual bool OnInit() override {
// Устанавливаем локаль для Unicode
setlocale(LC_ALL, "ru_RU.UTF-8");
m_locale.Init(wxLANGUAGE_RUSSIAN, wxLOCALE_DONT_LOAD_DEFAULT);
wxPuts(L"Работа с файлом настроек");
// Создаем имя файла конфигурации
wxFileName fn(wxStandardPaths::Get().GetExecutablePath());
fn.SetExt("ini");
// Создаем объект конфигурации
auto m_fileconfig = std::make_unique<wxFileConfig>(
wxEmptyString, wxEmptyString, fn.GetFullPath(), wxEmptyString,
wxCONFIG_USE_LOCAL_FILE | wxCONFIG_USE_NO_ESCAPE_CHARACTERS
);
wxConfigBase::Set(m_fileconfig.get());
wxConfigBase* conf = wxConfigBase::Get(false);
if (!conf) {
wxPuts(L"Ошибка: объект конфигурации не создан!");
return false;
}
conf->SetPath(L"/settings");
conf->Write(L"language_ru", L"русский");
conf->SetPath(L"/settings_add");
conf->Write(L"language_en", L"английский");
conf->Write(L"language_de", L"немецкий");
wxPuts(conf->Read(L"language_de", L"de ?"));
wxPuts(conf->Read(L"language_en", L"en ?"));
conf->SetPath(L"/settings");
wxPuts(conf->Read(L"language_ru", L"ru ?"));
m_fileconfig->Flush(); // Сохраняем настройки
wxConfigBase::Set(nullptr); // Очищаем объект конфигурации
// Ожидание ввода без использования system()
wxPuts(L"Нажмите Enter для выхода...");
std::wcin.get();
return false; // Завершаем приложение
}
};
// Определяем точку входа вручную
wxIMPLEMENT_APP_NO_MAIN(MyApp);
int main(int argc, char** argv) {
wxInitializer initializer;
if (!initializer.IsOk()) {
wxPuts(L"Ошибка: wxWidgets не инициализирован!");
return -1;
}
return wxEntry(argc, argv);
}