- •Методические рекомендации
- •План лекции
- •Интерфейс графического устройства
- •Программирование, основанное на ресурсах
- •Управления памятью
- •Документы и их представление
- •Контрольные вопросы
- •Редактирование функций.
- •Изучение работы приложения.
- •Самостоятельная работа.
- •Добавление своего класса.
- •Домашняя работа.
- •Лекция 2. Основы программирования. Работа с классом Вид. Методические рекомендации:
- •Интерфейс графического устройства
- •Работа с gdi объектами
- •Пример создания нового gdi объекта
- •Режимы преобразования координат
- •Режимы преобразования координат с постоянным масштабом
- •Режимы преобразования координат с переменным масштабом
- •Замечание
- •Координатные пространства mfc
- •Пример использования режимов преобразования координат
- •Работа с окнами, содержащими полосы прокрутки
- •Линейки прокрутки
- •Различные способы прокрутки
- •Прием ввода с клавиатуры
- •Контрольные вопросы
- •Обработка сообщений от мыши.
- •Задание для самостоятельной домашней разработки.
- •Лекция 3. Меню. Панели инструментов и строки состояния Методические рекомендации
- •Меню Windows
- •Обновление командного пользовательского интерфейса
- •Класс cMenu
- •Создание контекстных меню
- •Панели элементов управления и каркас приложений
- •Панель инструментов
- •Растровое изображение панели инструментов
- •Состояния кнопок Любая кнопка может находиться в следующих состояниях
- •Всплывающие подсказки
- •Строка состояния
- •Определение секций в строке состояния
- •Строка сообщений
- •Индикатор состояния
- •Управление строкой состояния
- •Контрольные вопросы:
- •Добавление переменных-членов.
- •Добавление функции OnMouseMove.
- •Программирование команд контекстного меню.
- •Программирование команд главного меню.
- •Домашняя работа.
- •Лекция 4. Диалоговые окна и стандартные элементы управления Методические рекомендации
- •Работа с модальным диалоговым окном
- •Стандартные элементы управления
- •Работа с немодальными диалоговыми окнами
- •Пользовательские сообщения
- •Принадлежность диалогового окна
- •Контрольные вопросы
- •Создание класса “диалогового окна”.
- •Добавление переменных-членов класса вашего диалогового окна.
- •Написание инициализирующего кода
- •Присваивание переменным начальных значений.
- •Самостоятельная работа.
- •Домашнее задание.
- •Лекция 5. Обработка сообщений Windows и программирование многопоточных приложений Методические рекомендации
- •Обработка сообщений в однопоточной программе
- •Передача управления
- •Таймеры
- •Обработка в периоды простоя
- •Программирование многопоточных приложений
- •Функция рабочего потока и запуск потока
- •Общение основного потока с рабочим
- •Общение рабочего потока с основным
- •Синхронизация потоков с использованием событий
- •Блокировка потоков
- •Критические секции
- •Потоки пользовательского интерфейса
- •Контрольные вопросы
- •Домашнее задание.
- •Задание для самостоятельной работы
- •Управление процессом Пример 1.
- •2. Замена образа процеса Пример 2. Использование функции exec.
- •Пример 3. Использование неименованного канала.
- •Пример 4. Создание именованного канал с именем "fifo".
- •3. Сигналы.
- •Пример 5. Использование сигналов.
- •Пример 6. Сообщения.
- •Пример 7. Сообщения.
- •Пример 8. Разделение памяти.
- •Пример 9. Использование семафоров.
- •Пример 10. Создание процесса вWindows.
- •Пример 11. Использование неименованного канала.
- •Пример 12. Использование именованного канала.
- •Пример 13. Использование разделяемой памяти File Mapping.
- •Пример 14. Использование Mailslot.
- •Пример 15. Использование событий.
Пример 4. Создание именованного канал с именем "fifo".
#include <fcntl.h>
main()
{
mknod("fifo",010777,0);
}
Файл имеет атрибуты p rwx rwx rwx.
Процесс 1
#include <fcntl.h>
main()
{
char string[] = "hello";
int fd;
char buf[6];
fd = open("fifo",O_WRONLY);
for (i=1;i<10;i++)
write(fd,string,6);
Процесс 2
#include <fcntl.h>
main()
{
char string[] = "hello";
int fd;
char buf[6];
fd = open("fifo",O_WRONLY);
for (i=1;i<10;i++)
{
write(fd,string,6);
printf(“%s\n”,buf);
}
}
3. Сигналы.
Аргумент sig функции signal может иметь одно из следующих значений, за исключением SIGKILL:
Сигнатура |
Номер |
Описани |
SIGHUP |
01 |
Освобождение линии (hangup). |
SIGINT |
02 |
Прерывание (interrupt). |
SIGQUIT |
03 |
Выход (quit). |
SIGILL |
04 |
Некорректная команда (illegal instruction). Не переустанавливается при перехвате. |
SIGTRAP |
05 |
Трассировочное прерывание (trace trap). Не переустанавливается при перехвате. |
SIGIOT |
06 |
Машинная команда IOT. |
SIGABRT |
06 |
Рекомендуемый синоним предыдущего. |
SIGEMT |
07 |
Машинная команда EMT. |
SIGFPE |
08 |
Исключительная ситуация при выполнении операции с вещественными числами (floating-point exception). |
SIGKILL |
09 |
Уничтожение процесса (kill). Не перехватывается и не игнорируется. |
SIGBUS |
10 |
Ошибка шины (bus error). |
SIGSEGV |
11 |
Некорректное обращение к сегменту памяти (segmentation violation). |
SIGSYS |
12 |
Некорректный параметр системного вызова (bad argument to system call). |
SIGPIPE |
13 |
Запись в канал, из которого некому читать (write on a pipe with no one to read it). |
SIGALRM |
14 |
Будильник (alarm clock). |
SIGTERM |
15 |
Программный сигнал завершения (software termination signal). |
SIGUSR1 |
16 |
Определяемый пользователем сигнал 1 (user-defined signal 1). |
SIGUSR2 |
17 |
Определяемый пользователем сигнал 2 (user-defined signal 2). |
SIGCLD |
18 |
Завершение порожденного процесса (death of a child). |
SIGPWR |
19 |
Ошибка питания (power fail). |
SIGPOLL |
22 |
Регистрация выборочного события (selectable event pending). |