-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDescription.txt
111 lines (89 loc) · 4.32 KB
/
Description.txt
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
Что требуется от библиотеки?
Набор классов для построения кроссплатформенного оконного GUI.
I. Высокоуровневые элементы.
* Главное окно приложения - CMainWindow.
Окно верхнего уровня, при закрытии которого, происходит закрытие приложения.
* Диалоговое окно - CDialogWindow.
Окно верхнего уровня, которым владеет главное окно приложения.
* Контекстное меню.
Не является окном.
II. Элементы управления (высокоуровневые элементы).
* Полоса меню.
* Строка статуса/состояния.
* Полосы прокрутки.
* Кнопка - CButton.
Дочернее окно в виде кнопки. Может быть фиксирующейся.
* Элемент с флажком, имеющий 2 состояния - CCheckBox2.
Дочернее окно.
* Элемент с флажком, имеющий 3 состояния - CCheckBox3.
Дочернее окно.
* Панель для визуального группирования других элементов - CGroupBox.
Дочернее окно, всегда располагающееся ниже всех других дочерних окон. Не обладает никаким
функционалом, служит для визуального обособления области родительского окна. Весь ввод передается
родительскому окну.
* Элемент редактирования - CEditBox.
Дочернее окно, позволяющее редактировать и/или отображать текст.
* Текстовая метка - CTextLabel.
Дочерний элемент, содержит текст, служит для визуальных пояснений, примечаний, обозначений и т.д.
* Комбинированный список - CComboBox.
Дочерний элемент, позволяющий выбрать элемент из списка или ввести свое значение, в случае его
отсутствия в списке.
* Иерархический список - CTreeView.
Дочерний элемент, позволяющий отображать данные в виде иерархического списка.
* Панель инструментов - CToolBar
Дочерний элемент, содержащий другие дочерние элементы.
III. Низкоуровневые элементы.
* Окно верхнего уровня - CTopLevelWindow;
Может иметь заголовок, кнопки в заголовке, меню, полосы прокрутки, строку статуса, рамку, размерную рамку.
Может быть владельцем других окон, может иметь владельца.
* Дочернее окно - CChildWindow;
Аналогично окну верхнего уровня, но не может иметь меню. Окна данного типа обязательно должны иметь
родительское окно (владельца) и не могу выходить за его пределы. Дочернее окно может иметь только
дочерние окна (не может быть владельцем окон, не являющихся дочерними).
* Элемент управления - CControlElement;
Общий интерфейс всех элементов управления
IV. Платформозависимые элементы.
* Окно - CSysWindow;
* Меню - CSysMenu;
* Класс события - CEventInfo;
Обработка событий/сообщений ОС.
Обработка событий через виртуальные методы. Каждый класс библиотеки имеет набор виртуальных функций,
вызываемых для обработки соответствующего события. Все они выполняют действия по умолчанию.
Для задания своего метода обработки какого-либо события нужно унаследовать класс и переопределить
соответствующую виртуальную функцию.
Общий формат обработчика:
virtual void OnEvent(class &EventInfo);
Обработка сообщений от других окон.
Дочернее окно А может определить одно или более событий, при возникновении которых родительскому окну
будет передаваться соответствующий код действия. Коды действий определяются родительским окно и
связываются с событиями дочерних окон. Для подобного связывания дочернее окно определяет для каждого
события, о котором оно хочет/может сообщить родительскому окну, связывающий метод, например кнопка
может определить связывающий метод void SetIndex_OnClick(DWORD aindex). После создания кнопки родительское
окно вызывает для этой кнопки этот метод, указывая код, которое оно (родит. окно) хотело бы получить,
при возникновении данного события кнопки.
Также дочернее окно А должно определить метод DWORD GetActionIndex(CEventInfo &ev) для обработки ситуация,
когда уведомления о возникновении события дочернего окна передаются родительскому окну в виде системно-зависимого
сообщения. Получив такое уведомление, родительское окно вызывает метод GetActionIndex дочернего окна.
Дочернее окно должно распознавать данное системное уведомление и передавать связанный код действия.
Таким образом, дочернее окно можно вызвать родительский метод ExecuteAction напрямую (для своих сообщений) и
опосредованно (для системных уведомлений), передавая родительскому окну лишь код действия.
Дефолтный код действия, не связанный ни с каким действие = (DWORD)-1
*******************************************
*** Как использовать библиотеку. ***
*******************************************
main.cpp
...
#include "Application.h"
...
void Init()
{
...
create main window
...
}
void Done()
{
...
destroy main window
...
}