Поcобие_БЕЛОВ_Графический_интерфейс_API
.pdf341
Продолжение прил. 2
Стиль |
|
|
Пояснение |
|
|
|
|
LBS_STANDARD |
|
|
Комбинация стилей LBS_NOTIFY, LBS_SORT, |
||||
|
|
|
WS_BORDER |
и WS_VSCROLL. Обычно |
|||
|
|
|
используют |
для |
создания |
простейшего |
|
|
|
|
одноколоночного списка |
|
|
||
|
|
|
|
|
|||
LBS_USETABSTOPS |
|
|
При отображении |
строк преобразовывать |
|||
|
|
|
символы табуляции. По умолчанию один |
||||
|
|
|
символ табуляции расширяется на 32 единицы |
||||
|
|
|
ширины диалоговых панелей (или 8 единиц |
||||
|
|
|
средней ширины текущего шрифта) |
|
|||
|
|
|
|
||||
LBS_WANTKEY- |
|
|
Родительское окно от списка получает |
||||
BOARDINPUT |
|
|
сообщения |
WM_VKEYTOITEM |
или |
||
|
|
|
WM_CHARTOITEM при работе со списком с |
||||
|
|
|
помощью клавиатуры. Это дает возможность |
||||
|
|
|
приложению |
выполнить |
специальную |
||
|
|
|
обработку ввода с клавиатуры |
|
|
||
|
|
|
|
||||
|
Таблица 2.7. Список стилей окон класса «ComboBox» |
||||||
|
|
|
|
|
|
|
|
Стиль |
|
Пояснение |
|
|
|
|
|
CBS_AUTOHSCROLL |
|
Автоматическая свертка текста по горизонтали в |
|||||
|
|
окне редактирования |
|
|
|
||
|
|
||||||
CBS_DISABLENOSCROLL |
Вертикальную полосу просмотра отображать в |
||||||
|
|
неактивном состоянии, даже если в списке |
|||||
|
|
помещаются все строки |
|
|
|
||
|
|
|
|||||
CBS_DROPDOWN |
|
Подобен CBS_SIMPLE, но список остается в |
|||||
|
|
невидимом состоянии до тех пор, пока |
|||||
|
|
пользователь не нажмет пиктограмму, |
|||||
|
|
предназначенную для отображения списка |
|
||||
|
|
|
|||||
CBS_DROPDOWNLIST |
|
Подобен CBS_DROPDOWN, но однострочный |
|||||
|
|
текстовый редактор может быть использован |
|||||
|
|
только для отображения текста, а не для |
|||||
|
|
редактирования |
|
|
|
|
|
|
|
|
|
||||
CBS_LOWERCASE |
|
Преобразовать все символы в строчные |
|
||||
CBS_SORT |
|
Автоматически сортирует строки, введенные в |
|||||
|
|
окно списка |
|
|
|
|
|
|
|
|
|||||
CBS_SIMPLE |
|
Создается список, который всегда виден и |
|||||
|
|
расположен под окном однострочного редактора |
|||||
|
|
текста, содержащего выделенную в списке |
|||||
|
|
|
|
||||
CBS_UPPERCASE |
|
Преобразовать все символы в прописные |
|
||||
342
Приложение 3
Таблица 3.1. Список системных цветов в RGB-представлении
Красный цвет |
Зеленый цвет |
Голубой цвет |
Цвет в системной |
|
|
|
палитре |
|
|
|
|
0 |
0 |
0 |
Черный |
80 |
0 |
0 |
Темно-красный |
0 |
80 |
0 |
Темно-зеленый |
80 |
80 |
0 |
Темно-желтый |
0 |
0 |
80 |
Темно-голубой |
80 |
0 |
80 |
Темно-малиновый |
0 |
80 |
80 |
Темно-синий |
192 |
192 |
192 |
Светло-серый |
192 |
220 |
192 |
Светло-зеленый |
166 |
202 |
240 |
Светло-голубой |
255 |
251 |
240 |
Кремовый |
160 |
160 |
164 |
Светло-серый |
80 |
80 |
80 |
Серый |
255 |
0 |
0 |
Красный |
0 |
255 |
0 |
Зеленый |
255 |
255 |
0 |
Желтый |
0 |
0 |
255 |
Синий |
255 |
0 |
255 |
Малиновый |
0 |
255 |
255 |
Голубой (циан) |
255 |
255 |
255 |
Белый |
|
Таблица 3.2. Список режимов рисования |
|
|
Режимы рисования |
Цвет пикселя |
R2 BLACK |
Черный |
R2 COPYPEN |
Цвет пера |
R2MASKNOTPEN или |
Комбинация цвета пикселя до рисования и |
R2_MERGENOTPEN |
инверсии цвета пера |
|
|
R2_MASKPEN или |
Комбинация цвета пикселя до рисования и цвета |
R2_MERGEPEN |
пера |
|
|
R2+MASKPENNOT или |
Комбинация инверсии цвета пикселя до |
R2_MERGEPENNOT |
рисования и цвета пера |
|
|
R2_NOP |
Остается неизменным |
R2_NOT |
Инверсия цвета пикселя до рисования |
R2_NOTCOPYPEN |
Инверсия цвета пера |
|
343 |
|
Окончание прил. 3 |
|
|
Режимы рисования |
Цвет пикселя |
R2_NOTMASKPEN или |
Инверсия цвета пикселя до рисования |
R2_NOTMERGEPEN |
|
R2_NOTXORPEN |
Инверсия цвета R2XORPEN |
R2_WHITE |
Белый |
R2_XORPEN |
Операция ИСКЛЮЧАЮЩЕЕ ИЛИ к цветам |
|
пикселя до рисования и пера |
|
|
344
Приложение 4
Таблица 4.1. Список кодов виртуальных клавиш
Символическое имя |
Код виртуальной |
Клавиша на клавиатуре |
|
|
|
клавиши |
|
|
|
|
|
|
|
|
Не определено |
0x0 |
– |
|
|
|
|
|
|
|
VK_LBUTTON |
0x1 |
– |
|
|
(код мыши) |
|
|
|
|
|
|
|
|
|
VK_RBUTTON |
0x2 |
– |
|
|
(код мыши) |
|
|
|
|
|
|
|
|
|
VK_CANCEL |
0x3 |
Control + Break |
|
|
VK_MBUTTON |
0x4 |
– |
|
|
(код мыши) |
|
|
|
|
|
|
|
|
|
Не определено |
0x5 – 0x7 |
– |
|
|
VK BACK |
0x8 |
Клавиша забоя Backspace |
|
|
VK_TAB |
0x9 |
Tab |
|
|
Не определено |
0xa – 0xb |
– |
|
|
VK_CLEAR |
0xc |
Соответствует клавише 5 |
|
|
|
|
дополнительной клавиатуры при |
||
|
|
выключенном режиме Num Lock |
||
|
|
|
|
|
VK_RETURN |
0xd |
Enter |
|
|
Не определено |
0xe – 0xf |
– |
|
|
VK_HIFT |
0x10 |
Shift |
|
|
VK_CONTROL |
0x11 |
Control |
|
|
VK_MENU |
0x12 |
Alt |
|
|
VK_PAUSE |
0x13 |
Pause |
|
|
VK_CAPITAL |
0x14 |
Caps Lock |
|
|
He определено |
0x15 – 0x1a |
– |
|
|
VK_ESCAPE |
1b |
Esc |
|
|
He определено |
0xlc – 0xlf |
– |
|
|
VK_SPACE |
0x20 |
Клавиша пробела |
|
|
VK_PRIOR |
0x21 |
PgUP |
|
|
VK_NEXT |
0x22 |
PgDn |
|
|
VK_END |
0x23 |
End |
|
|
VK_HOME |
0x24 |
Home |
|
|
VK_LEFT |
0x25 |
Клавиша |
перемещения |
влево |
|
|
|
|
|
VK_UP |
0x26 |
Клавиша |
перемещения |
вверх |
VK_DOWN |
0x28 |
Клавиша |
перемещения |
вниз |
VK_SELECT |
0x29 |
– |
|
|
VK_RIGHT |
0x27 |
Клавиша |
перемещения |
вправо |
345
|
|
Продолжение прил. 4 |
|
|
|
Символическое имя |
Код виртуальной |
Клавиша на клавиатуре |
|
клавиши |
|
|
|
|
VK_PRINT |
0x2a |
– |
VK_EXECUTE |
0x2b |
– |
VK_SNAPSHOT |
0x2c |
PrtSc |
VK_INSERT |
0x2d |
Insert |
VK_DELETE |
0x2e |
DeIete |
VK_HELP |
0x2f |
– |
He определено |
0x30 |
0 |
– |
0x31 |
1 |
– |
0x32 |
2 |
– |
0x33 |
3 |
– |
0x34 |
4 |
– |
0x35 |
5 |
– |
0x36 |
6 |
– |
0x37 |
7 |
– |
0x38 |
8 |
– |
0x39 |
9 |
– |
0x3a – 0x40 |
– |
– |
0x41 |
A |
– |
0x42 |
B |
– |
0x43 |
C |
– |
0x44 |
D |
– |
0x45 |
E |
– |
0x46 |
F |
– |
0x47 |
G |
– |
0x48 |
H |
– |
0x49 |
I |
– |
0x4a |
J |
– |
0x4b |
K |
– |
0x4c |
L |
– |
0x4d |
M |
– |
0x4e |
N |
– |
0x4f |
0 |
– |
0x50 |
P |
– |
0x51 |
Q |
– |
0x52 |
R |
– |
0x53 |
S |
– |
0х54 |
T |
– |
0x55 |
U |
346
|
|
Продолжение прил. 4 |
|
|
|
Символическое имя |
Код виртуальной |
Клавиша на клавиатуре |
|
клавиши |
|
– |
0x56 |
V |
– |
0x57 |
w |
– |
0x58 |
x |
– |
0x59 |
Y |
– |
0x5a |
Z |
– |
0x5b-0x5f |
– |
VK_NUMPAD0 |
0x60 |
0 на цифровой клавиатуре |
VK_NUMPAD1 |
0x61 |
1 на цифровой клавиатуре |
VK+NUMPAD2 |
0x62 |
2 на цифровой клавиатуре |
VK_NUMPAD3 |
0x63 |
3 на цифровой клавиатуре |
VK_NUMPAD4 |
0x64 |
4 на цифровой клавиатуре |
VK_NUMPAD5 |
0x65 |
5 на цифровой клавиатуре |
VK_NUMPAD6 |
0x66 |
6 на цифровой клавиатуре |
VK_NUMPAD7 |
0x67 |
7 на цифровой клавиатуре |
VK_NUMPAD8 |
0x68 |
8 на цифровой клавиатуре |
VK_NUMPAD9 |
0x69 |
9 на цифровой клавиатуре |
VK_MULTIPLAY |
0x6a |
* на цифровой клавиатуре |
VK_ADD |
0x6b |
+ на цифровой клавиатуре |
VK_SEPARATOR |
0x6c |
– |
VK_SUBTRACT |
0x6d |
- на цифровой клавиатуре |
VK_DECIMAL |
0х6е |
0 на цифровой клавиатуре |
VK_DIVIDE |
0x6f |
/ на цифровой клавиатуре |
VK_Fl |
0x70 |
F1 |
VK_F2 |
0x71 |
F2 |
VK_F3 |
0x72 |
F3 |
VK_F4 . |
0x73 |
F4 |
VK_F5 |
0x74 |
F5 |
VK_F6 |
0x75 |
F6 |
VK_F7 |
0x76 |
F7 |
VK_F8 |
0x77 |
F8 |
VK_F9 |
0x78 |
F9 |
VK_F10 |
0x79 |
F10 |
VK_F11 |
0x7а |
F11 |
VK_F12 |
0x7b |
F12 |
VK_NUMLOCK |
0x90 |
Num Lock |
VK_SCROLL |
0x91 |
Scroll Lock |
347
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ |
3 |
ГЛАВА 1. СОЗДАНИЕ ОКОН |
5 |
1.1. Виды окон |
5 |
1.2. Класс окон |
5 |
1.2.1. Описание используемых классом окон ресурсов |
6 |
1.2.2. Пример регистрации класса окон |
7 |
1.2.3. Функция окна |
8 |
1.3. Создание окон |
11 |
1.4. Главная функция приложения |
14 |
1.5. Структура текста приложения |
17 |
1.6. Вспомогательные функции создания окон |
21 |
1.6.1. Функции поиска и определения состояния окон |
21 |
1.6.2. Функции перемещения окон |
22 |
1.6.3. Сообщения приложения для пользователя |
25 |
1.7. Примеры создания окон |
28 |
1.7.1. Проверка наличия предыдущего экземпляра |
28 |
1.7.2. Расположение окон черепицей |
32 |
Упражнения |
37 |
Контрольные вопросы |
40 |
ГЛАВА 2. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ |
41 |
2.1. Кнопки |
42 |
2.1.1. Создание кнопок |
42 |
2.1.2. Кнопки и сообщения |
45 |
2.1.3. Флажки и переключатели |
50 |
2.2. Статический элемент управления |
51 |
2.3. Полоса прокрутки |
52 |
2.3.1. Создание полосы прокрутки |
53 |
2.3.2. Простейшие полосы прокрутки |
54 |
2.3.3. Сообщения от полосы прокрутки |
57 |
2.3.4. Управление полосой прокрутки |
57 |
2.3.5. Пример обработки сообщений от полос прокрутки |
60 |
2.3.6. Новые функции управления полосами прокрутки |
64 |
2.3.7. Пример окна приложения с полосой просмотра |
66 |
2.4. Редактор текста |
70 |
2.4.1. Создание редактора |
70 |
348 |
|
2.4.2. Сообщения для редактора текста |
71 |
2.4.3. Сообщения от редактора текста |
72 |
2.4.4. Пример работы с однострочным редактором |
73 |
2.5. Списки строк |
75 |
2.5.1. Создание списка |
75 |
2.5.2. Сообщения от списка |
76 |
2.5.3. Сообщения для списка |
76 |
2.5.4. Пример работы со списком |
78 |
2.6. Комбинированный список |
81 |
2.6.1. Создание комбинированного списка |
81 |
2.6.2. Коды извещения |
81 |
2.6.3. Сообщения для комбинированного списка |
82 |
2.6.4. Пример работы с комбинированным списком |
83 |
Контрольные вопросы |
87 |
ГЛАВА 3. ВЫВОД В ОКНО |
88 |
3.1. Сообщение WM_PAINT |
89 |
3.2. Виды контекста отображения |
94 |
3.3. Установка атрибутов контекста отображения |
106 |
3.4. Вывод текста |
113 |
3.4.1. Настройка параметров шрифта |
113 |
3.4.2. Выбор шрифта в контекст отображения |
116 |
3.4.3. Функции вывода текста |
117 |
3.4.4. Пример вывода текста в окно |
118 |
3.4.5. Определение метрик шрифта |
121 |
3.5. Рисование геометрических фигур |
131 |
3.5.1. Функции рисования точки |
131 |
3.5.2. Функции рисования линий |
132 |
3.5.3. Функции рисования замкнутых фигур |
142 |
Упражнения |
144 |
ГЛАВА 4. МЕНЮ |
148 |
4.1. Элементы меню |
149 |
4.2. Создание меню |
151 |
4.2.1. Вставка элементов в меню |
153 |
4.2.2. Удаление элементов из меню |
158 |
4.2.3. Управление состоянием элементов меню |
164 |
4.2.4. Получение информации о меню |
172 |
4.3. Сообщения от меню |
177 |
349 |
|
4.4. Плавающее меню |
178 |
4.5. Акселераторы |
182 |
Упражнения |
195 |
Контрольные вопросы |
198 |
ГЛАВА 5. ПАНЕЛЬ ИНСТРУМЕНТОВ И СТРОКА |
|
СОСТОЯНИЯ |
199 |
5.1. Панель инструментов |
199 |
5.1.1. Создание панели инструментов |
199 |
5.1.2. Управление состоянием кнопок панели |
209 |
5.1.3. Вывод подсказок в панели инструментов |
220 |
5.2. Строка состояния |
231 |
5.2.1. Создание строки состояния |
231 |
5.2.2. Сообщения о меню в строке состояния |
234 |
Упражнения |
243 |
Контрольные вопросы |
244 |
ГЛАВА 6. ДИАЛОГОВЫЕ ПАНЕЛИ |
245 |
6.1. Характеристики диалоговых панелей |
245 |
6.1.1. Единицы диалоговой панели |
246 |
6.1.2. Стили диалоговой панели |
247 |
6.1.3. Функция окна диалоговой панели |
248 |
6.2. Создание диалоговой панели |
250 |
6.2.1. Создание модальной диалоговой панели |
250 |
6.2.2. Создание немодальной диалоговой панели |
251 |
6.2.3. Шаблон диалоговой панели |
251 |
6.2.4. Пример немодальной диалоговой панели |
266 |
6.3. Сообщения и диалоговые панели |
271 |
6.4. Блокнот диалоговых панелей |
283 |
6.5. Стандартные диалоговые панели |
299 |
6.5.1. Панели для открытия или сохранения файлов |
299 |
6.5.2. Панель для выбора цвета |
309 |
6.5.3. Панель для выбора шрифта |
315 |
Упражнения |
323 |
Контрольные вопросы |
326 |
СПИСОК ИСПОЛЬЗОВАННОЙ И РЕКОМЕНДУЕМОЙ |
|
ЛИТЕРАТУРЫ |
327 |
ПРИЛОЖЕНИЯ |
329 |
350
УЧЕБНОЕ ИЗДАНИЕ
Евгений Александрович Белов
ПРОГРАММИРОВАНИЕ ПРИЛОЖЕНИЙ WINDOWS. API ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ
Редактор издательства Л.Н. Мажугина Компьютерный набор Е.А. Белов
Темплан 2010 г., п.10
Подписано в печать 19.07.10 Формат 60х84 1/16. Бумага офсетная. Офсетная печать. Усл. печ.л. 12,52 Уч.-изд.л. 12,52 Тираж 70 экз. Заказ .
Брянский государственный технический университет 241035, г. Брянск, бульвар им. 50-летия Октября, 7, тел. 58-82-49
Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16
