- •Методические рекомендации
- •План лекции
- •Интерфейс графического устройства
- •Программирование, основанное на ресурсах
- •Управления памятью
- •Документы и их представление
- •Контрольные вопросы
- •Редактирование функций.
- •Изучение работы приложения.
- •Самостоятельная работа.
- •Добавление своего класса.
- •Домашняя работа.
- •Лекция 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. Использование событий.
Программирование команд главного меню.
Добавьте обработчики для пунктов главного меню. А также создайте обработчики для сообщений UDATE_COMMAND_UI. Это необходимо, для того чтобы Вы могли модифицировать пункты меню в процессе работы программы. Т.е. включать и выключить их, а также выводить перед пунктом флажок, отмечая, что этот пункт выбран.
/////////////////////////////////////////////////////////////
// Обработка комманд главного меню //
////////////////////////////////////////////////////////////
// КРАСНАЯ ГРУППА
// Обработка командного сообщения поступающего от пункта
// Цвета линий->Красный
////////////////////////////////////////////////
void CL3_1View::OnMenuLred()
{
//Если признак "выбранности" данного пункта
//до этого не был установлен, то установить его,
//и цвет ЛИНИЙ сделать красным. В противном случае
//установить признак снятия "выбранности" и установить
//черный цвет линий
if (m_lred==0) {m_lred=1; m_col_l=RGB(255,0,0);}
else {m_lred=0;m_col_l=RGB(0,0,0);}
}
// Обработка командного сообщения поступающего от пункта
// Цвета заливки->Красный
////////////////////////////////////////////////
void CL3_1View::OnMenuZred()
{
//Если признак "выбранности" данного пункта
//до этого не был установлен, то установить его,
//и цвет ЗАЛИВКИ сделать красным. В противном случае
//установить признак снятия "выбранности" и установить
//черный цвет линий
if (m_zred==0) {m_zred=1;m_col_z=RGB(255,0,0);}
else {m_zred=0;m_col_z=RGB(0,0,0);}
}
////////////////////////////////////////////////
//Модификация пункта Цвета линий-> Красный в соответствии
//с признаками "выбранности"
void CL3_1View::OnUpdateMenuLred(CCmdUI* pCmdUI)
{
// Если установлен ризнак "выбранности" красной ЗАЛИВКИ
// то сделать пункт "Цвета линий -> красный" неактивным
// в противном случае сделать его активным и установить
// флажок в соответствии с признаком “выбранности.”
if (m_zred==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_lred);
}
}
//Модификация пункта Цвета заливки-> Красный в соответствии
//с признаками "выбранности"
////////////////////////////////////////////////
void CL3_1View::OnUpdateMenuZred(CCmdUI* pCmdUI)
{
// Если установлен ризнак "выбранности" красной ЛИНИИ
// то сделать пункт "Цвета заливки -> красный" неактивным
// в противном случае сделать его активным и установить
//флажок в соответствии с признаком “выбранности.”
if (m_lred==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_zred);
}
}
////////////////////////////////////////////////
// СИНЯЯ ГРУППА
////////////////////////////////////////////////
// Обработка командного сообщения поступающего от пункта
// Цвета линий->Синий
void CL3_1View::OnMenuLblur()
{
if (m_lblur==0) {m_lblur=1; m_col_l=RGB(0,0,255);}
else {m_lblur=0;m_col_l=RGB(0,0,0);}
}
////////////////////////////////////////////////
//Модификация пункта Цвета линий-> Синий в соответствии
//с признаками "выбранности"
void CL3_1View::OnUpdateMenuLblur(CCmdUI* pCmdUI)
{
if (m_zblur==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_lblur);
}
}
////////////////////////////////////////////////
// Обработка командного сообщения поступающего от пункта
// Цвета заливки->Синий
void CL3_1View::OnMenuZblur()
{
if (m_zblur==0) {m_zblur=1; m_col_z=RGB(0,0,255);}
else {m_zblur=0;m_col_z=RGB(0,0,0);}
}
////////////////////////////////////////////////
//Модификация пункта Цвета заливки-> Синий в соответствии
//с признаками "выбранности"
void CL3_1View::OnUpdateMenuZblur(CCmdUI* pCmdUI)
{
if (m_lblur==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_zblur);
}
}
////////////////////////////////////////////////
// ЗЕЛЕНАЯ ГРУППА
////////////////////////////////////////////////
// Обработка командного сообщения поступающего от пункта
// Цвета линий->Зеленый
void CL3_1View::OnMenuLgreen()
{
if (m_lgreen==0) {m_lgreen=1; m_col_z=RGB(0,255,0);}
else {m_lgreen=0;m_col_z=RGB(0,0,0);}
}
////////////////////////////////////////////////
//Модификация пункта Цвета линий-> Зеленый в соответствии
//с признаками "выбранности"
void CL3_1View::OnUpdateMenuLgreen(CCmdUI* pCmdUI)
{
if (m_zgreen==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_lgreen);
}
}
////////////////////////////////////////////////
// Обработка командного сообщения поступающего от пункта
// Цвета заливки->Зеленый
void CL3_1View::OnMenuZgreen()
{
if (m_zgreen==0) {m_zgreen=1; m_col_z=RGB(0,255,0);}
else {m_zgreen=0;m_col_z=RGB(0,0,0);}
}
////////////////////////////////////////////////
//Модификация пункта Цвета заливки-> Зеленый в соответствии
//с признаками "выбранности"
void CL3_1View::OnUpdateMenuZgreen(CCmdUI* pCmdUI)
{
if (m_lgreen==1) {pCmdUI->Enable(FALSE);}
else
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_zgreen);
}
}