- •5. Программирование в операционной системе windows
- •5.1. Основные концепции Windows
- •Контрольные вопросы
- •5.2. Архитектура, управляемая событиями
- •Контрольные вопросы
- •5.3. Примеры программ.
- •Int winapi WinMain (hinstance hInstance,
- •Int CmdShow)
- •Int winapi WinMain (hinstance hInstance,
- •Int MessageBox (hwnd hWnd, lpctstr lpText, lpctstr lpCaption, uint uType).
- •Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lptstr lpCmdLine, int nCmdShow)
- •If (!RegisterClassEx(&wc))
- •If (!hMainWnd)
- •Int nWidth,
- •Int nHeight,
- •Контрольные вопросы
- •5.4. Программирование графики
- •Bool InvalidateRect (hwnd hWnd, const rect* lpRect, bool bErase);
- •Bool InvalidateRgn (hwnd hWnd, hrgn hRgn, bool bErase);
- •Bool ClientToScreen(hwnd hWnd, lpoint lpPoint); bool ScreenToClient(hwnd hWnd, lpoint lpPoint);
- •Контрольные вопросы
- •5.5. Рисование линий, фигур, текста
- •GetCurrentPositionEx (hdc, &pt);
- •Bool Polyline (hdc hdc, const point* lppt, int cPoints);
- •Bool PolylineTo (hdc hdc, const point* lppt, dword cPoints);
- •Bool Arc (hdc hdc, int xLeft, int yTop, int xRight, int yBottom, int xStart, int yStart, int xEnd, int yEnd);
- •SetArcDirection (hdc, ad_clockwise);
- •Bool Rectangle (hdc hdc, int xLeft, int yTop, int xRight int yBottom);
- •Bool Ellipse (hdc hdc, int xLeft, int yTop, int xRight, int yBottom);
- •Bool Polygon (hdc hdc, const point * lpPoints, int nCount);
- •Контрольные вопросы
- •5.6. Средства ввода
- •If (!RegisterClassEx(&wc))
- •X, y, width, height, hParent,
- •If (!hWnd)
If (!RegisterClassEx(&wc))
{
char msg[100] = "Невозможно зарегистрировать окно: ";
strcat(msg, szClassName);
MessageBox(NULL, msg, "Error", MB_OK);
return;
}
// Создаем окно
hWnd = CreateWindow (szClassName, windowName, windowStyle,
X, y, width, height, hParent,
(HMENU)NULL, hInst, NULL);
If (!hWnd)
{
char text[100] = "Невозможно создать окно: ";
strcat (text, windowName);
MessageBox (NULL, text, "Error", MB_OK);
return;
}
// Показываем окно
ShowWindow (hWnd, cmdShow);
}
Обратим внимание на некоторые моменты предложененого решения:
заголовок конструктора класса TTVWindow содержит 12 параметров. Первые четыре параметра являются обязательными, остальные имеют значения по умолчанию;
четвертый параметр является указателем на функцию, принимающую четыре аргумента и возвращающую значение типа LRESULT. Здесь обязателен спецификатор WINAPI или эквивалентный ему спецификатор __stdcall;
код, отвечающий за подготовку и создание окна, размещен в теле конструктора класса TTVWindow.
Контрольные вопросы
5.7. Меню и быстрые клавиши
5.8. Диалоговые окна
5.9. Программирование анимации
A
API 1
Application Programming Interface 1
B
bitmap 19
brush 12, 19
C
client coordinates 22
clipping region 20
cкан-код 27
D
dead keys 30
device context 18, 19
device coordinates 23
device space 23
F
font 19
G
graphic device interface 19
Graphical User Interface 2
H
hot spot 31
I
invalid region 20
K
keyboard focus 27
M
message loop 16
message queue 16
mouse cursor 31
P
page space 23
palette 19
pen 19
R
region 19
S
scan code 27
screen coordinates 22
U
update region 20
V
VCL 1
virtual key code 27, 29
visible region 20
Visual Components Library 1
W
window class 6
window coordinates 22
window messages 6
world space 23
а
активное окно 27
в
видимый регион 20
виртуальная клавиша 16
виртуальный код клавиши 27
В
Виртуальный код клавиши 29
г
горячая точка 31
Г
Графический интерфейс устройства 19
д
дескриптор контекста устройства 18, 19
И
Интерфейс прикладного программирования 1
к
кисть 6, 18, 19
К
Кисть 12
к
класс окна 6
клиентские координаты 22, 24
контекст устройства 18, 19, 20, 23
координаты устройства 23
курсор мыши 31
м
мировая система координат 23
н
недействительный регион 20
немые клавиши 30
О
Обновляемый регион 20
о
окно сообщений 8
оконная процедура 6, 27
оконные сообщения 6
оконныеt координаты 22
О
Оконный класс 6
о
очередь сообщений 6, 7, 16
п
палитра 19
перо 18, 19, 24
р
растровое изображение 19
регион 18, 19
регион отсечения 20
с
система координат устройства 23
соглашения о вызове 8
стандартные оконные классы 6
стандартный оконный класс 6
страничная система координат 23, 24
Т
Текущая позиция пера 25
ф
физическая система координат 23
фокус ввода 27
функция обратного вызова 6, 17
ц
цикл обработки сообщений 6, 7, 16, 27
ш
шрифт 18, 19
э
экранные координаты 14, 16, 22, 23
элементов управления 6
1 Графический интерфейс пользователя
2 Окно верхнего уровня не имеет родительского окна
3 С-строка обязана завершиться нулевым байтом. В каждом байте содержится один символ в соответствии с кодировкой ANSI. Далее, если это не оговаривается особо, под строками будут подразумеваться именно С-строки.
4 Unicode-строка также завершается нулевым байтом, но для хранения каждого символа используется два байта. Чтобы использовать в проекте кодировку UNICODE, необходимо предусмотреть директиву #define UNICODE
5 Это расширенная версия (Ex – от extended - расширенный) функции RegisterClass из предыдущих версий Windows.
6 Тип TCHAR интерпретируется как char, если макрос UNICODE не определен. В ином случае он интерпретируется как wchar_t (Unicode –символ).
7 Информация об этом факте хранится в одном из полей структуры ps
