
- •Основные понятия ос. Ос как расширенная машина. Ос как система управления ресурсами.
- •Функции ос. Подсистема управления подпрограммами. Диаграмма состояния процесса.
- •Процессы и потоки.
- •Алгоритмы синхронизации потоков. Критическая секция.
- •Синхронизация в режиме ядра. Семафоры, мьютексы. Типичные задачи: производители-потребители и читатели-писатели.
- •Организация памяти компьютера. Логическая память. Сегменты. Связывание адресов.
- •Простейшие схемы управления памятью. Схемы с фиксированными и переменными разделами. Страничная память. Сегментно-страничная организация памяти.
- •Файловые системы.
- •Архитектура ос. Ядро и вспомогательные модули. Микроядерная архитектура. Преимущества и недостатки.
- •Программирование, управляемое событиями. Простейшее приложение Windows.
- •Окна в Windows. Функции окна. Класс окна.
- •Обработка сообщений. Приложение с обработкой сообщений.
- •Вывод текста в окно. Контекст отображения.
- •Стили окна. Приложение, использующее предопределенные в Windows стили окна.
- •Работа с файлами в Windows.
Стили окна. Приложение, использующее предопределенные в Windows стили окна.
Стиль окна уточняет внешний вид и поведение отдельного окна. Существует 3 основных стиля:
перекрывающийся, временный и дочерний.
Перекрывающийся – используется в качестве главного окна приложения. Имеет заголовок и
рамку. Дополнительно может иметь системное меню, кнопки изменения размера и сворачивания в пиктограмму. Приложение может создавать несколько перекрывающийся окон, одно из которых может содержать другое. Если окно-хозяин сворачивается в пиктограмму, то все окна, которыми он владеет, становятся невидимыми. При уничтожении окна автоматически уничтожаются и все принадлежащие ему окна. Окно, не имеющее владельца, располагается в любом месте экрана и имеет любые размеры. Подчиненные окна всегда располагаются на поверхности окна владельца. Координаты создаваемых перекрывающихся окон указываются по отношению ко всему экрану.
Временные – используются для вывода информационных сообщений. Они могут не иметь
заголовка. Все свойства, связанные с владельцем и расположением на экране перекрывающихся окон справедливы и для временных.
Дочерние - используются для создания органов управления, таких как кнопки и переключатели. В отличие от перекрывающийся окон, дочерние окна не имеют изначально ни рамки, ни заголовка. Дочерние окна сами рисуют все, что в них изображается. Они всегда располагаются на поверхности окна-родителя. Дочерние окна не выходят за пределы родительского окна и перемещаются вместе с ним. При создании дочернего окна начало системы координат находится в левом верхнем углу окна-родителя.
Таблица стилей.
Стандартный стиль перекрывающихся окон:
WS_OVERLAPPERDWINDOW = WS_OVERLAPPED;
WS_CAPTION;
WS_SYSMENU;
WS_THICKFRAME;
WS_MINIMIZBOX;
WS_MAXIMIZBOX;
Стандартный стиль всплывающего окна:
WS_POPUPWINDOW = WS_POPUP;
WS_VORDER;
WS_SYSMENU;
WS_CHILD – базовый стиль дочернего окна.
Элементы управления. Windows регистрирует несколько предопределенных классов окна. Приложение может создавать окна на базе предопределенных классов. Имена простейших классов:
Button – кнопка;
Edit – текстовый редактор;
Static – надпись;
Listbox – список;
Scrollbar – полоса прокрутки;
Combobox;
Пример: Приложение, создающее в своем окне однострочный редактор текста и кнопку с надписью “OK”. После ввода текста и нажатия кнопки на экране появляется сообщение, состоящее из введенного текста. До функции WinMain определяем именованные константы:
#define ID_EDIT 1;
#define ID_BUTTON 2;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
static HWND hEdit;
static HWND hButton;
switch (msg)
{
case WM_CREATE:
{
hEdit = CreateWindow(“edit”, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 30, 30, 300, 30, hwnd, (HMENU)ID_EDIT, NULL);
hButton = CreateWindow(“button”, NULL, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 50, 50, 100, 100, hwnd, (HMENU)ID_BUTTON, NULL);
return 0;
}
break;
case WM_SETFOCUS:
{
SetFocus(hEdit);
return 0;
}
break;
case WM_COMMAND:
{
if (wp == ID_EDIT)
if (HIWORD(lp) == EN_ERRSPACE)
MessageBox(hwnd, “мало памяти”, “”, MB_OK);
else if (wp == ID_BUTTON)
{
BYTE chBuff[80];
WORD Text;
*(WORD*) chBuff = sizeif(chBuff); // запись в первое слово буфера его // размера в байтах
cbText – SendMessage(hEdit, EM_GETLINE, 0, (LPSTR)chBuff);
chBuff[cbText] = ‘\0’;
MessageBox(hwnd, chBuff, “”, MB_OK);
return 0;
}
} }
}
Стиль |
Описание |
BS_3STATE |
Переключатель с 3ия состояниями: включено, выключено, неактивно. |
BS_AUTO3STATE |
3 состояния: состоянии переключаются автоматически. |
BS_AUTOCHECKBOX |
Состояния меняются автоматически. |
BS_AUTORADIOBUTTON |
Состояния меняются автоматически. |
BS_CHECKBOX |
2 состояния: включено/выключено. |
BS_DEFPUSHBUTTON |
Командная кнопка. |
BS_GROUPBOX |
Прямоугольная область с заголовком. |