-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSource.cpp
More file actions
82 lines (70 loc) · 4.42 KB
/
Source.cpp
File metadata and controls
82 lines (70 loc) · 4.42 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
#include <wx/wx.h>
#include "tsnsoft.xpm" // Подключаем файл иконки в формате XPM для окна приложения
// Определяем уникальные идентификаторы для кнопок, чтобы избежать конфликтов с wxWidgets
enum {
ID_BUTTON1 = wxID_HIGHEST + 1, // Уникальный ID для первой кнопки
ID_BUTTON2 = wxID_HIGHEST + 2 // Уникальный ID для второй кнопки
};
// Главное окно приложения, наследуем от wxFrame
class MyFrame : public wxFrame {
public:
// Конструктор главного окна
MyFrame() : wxFrame(nullptr, wxID_ANY, "Test", wxDefaultPosition, wxSize(300, 250)) {
// Устанавливаем иконку окна из файла tsnsoft.xpm
SetIcon(tsnsoft_xpm);
// Создаем текстовую метку (статический текст) в окне
new wxStaticText(this, wxID_ANY, wxT("Текстовая метка"), wxPoint(100, 30));
// Создаем первую кнопку с идентификатором ID_BUTTON1
new wxButton(this, ID_BUTTON1, wxT("Нажми меня!"), wxPoint(100, 70), wxSize(100, 30));
// Создаем вторую кнопку с идентификатором ID_BUTTON2
new wxButton(this, ID_BUTTON2, wxT("Нажми ещё!"), wxPoint(100, 110), wxSize(100, 30));
/*
* Вариант с использованием Bind для привязки событий вместо таблицы событий:
* Bind позволяет динамически связывать события с обработчиками во время выполнения.
* Это более гибкий подход, чем статическая таблица событий.
*
* Пример:
* Bind(wxEVT_BUTTON, &MyFrame::OnButton1Click, this, ID_BUTTON1);
* Bind(wxEVT_BUTTON, &MyFrame::OnButton2Click, this, ID_BUTTON2);
*
* В данном коде используется таблица событий (DECLARE_EVENT_TABLE),
* но Bind можно использовать как альтернативу, особенно если нужно
* динамически добавлять или изменять обработчики событий.
*/
}
private:
// Обработчик события для первой кнопки
void OnButton1Click(wxCommandEvent& event) {
// Выводим диалоговое окно с сообщением
wxMessageBox(wxT("Привет! Это моя фраза!"), wxT("Сообщение"), wxOK | wxICON_INFORMATION, this);
}
// Обработчик события для второй кнопки
void OnButton2Click(wxCommandEvent& event) {
// Выводим диалоговое окно с другим сообщением
wxMessageBox(wxT("Ого! Это другая фраза!"), wxT("Сообщение"), wxOK | wxICON_INFORMATION, this);
}
// Объявляем таблицу событий для связи событий с обработчиками
DECLARE_EVENT_TABLE()
};
// Определяем таблицу событий, связывающую события кнопок с их обработчиками
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(ID_BUTTON1, MyFrame::OnButton1Click) // Событие для первой кнопки
EVT_BUTTON(ID_BUTTON2, MyFrame::OnButton2Click) // Событие для второй кнопки
END_EVENT_TABLE()
// Класс приложения, наследуем от wxApp
class MyApp : public wxApp {
public:
// Метод инициализации приложения, вызывается при запуске
virtual bool OnInit() override {
// Создаем экземпляр главного окна
MyFrame* frame = new MyFrame();
// Показываем окно
frame->Show(true);
// Центрируем окно на экране
frame->Centre();
// Возвращаем true, чтобы приложение продолжило работу
return true;
}
};
// Создаем точку входа в приложение, запуская MyApp
wxIMPLEMENT_APP(MyApp);