
- •Создание рисунка в окне приложения.
- •Создание диалогового окна.
- •Создание класса для диалогового окна.
- •Команды, которые вызываются при нажатии кнопок ok и Отмена в диалоговом окне.
- •Добавление команды “Толщина линии” в меню “Перо”. Добавление обработчика OnPenWidth для команды “Толщина линии”
- •Отображение диалогового окна.
- •Добавление стандартного диалога для выбора цвета кисти.
- •Добавление переменной в класс cDialogsView для определения дополнительной цветовой палитры стандартного диалога.
- •Добавление команды “Цветовая палитра” в меню “Перо”. Код функции команды “Цветовая палитра для кисти”.
- •Сохранение результатов выбора цвета и толщины для пера и цвет кисти.
- •Самостоятельная работа
Создание проекта программы Dialogs.
Выберите пункты меню Файл Создать Проект (File New Project). В диалоговом окне Создать проект (New Project) выберите вкладку шаблона MFC в Visual C++. Далее выбираем шаблон Приложение MFC (MFC Application). Замените текст <Введите имя> (<Enter name>) в поле Имя (Name) текстом Dialogs. В поле Расположение (Location) введите путь, где будет храниться новый проект Dialogs, при помощи кнопки Обзор (Browse). Щелкните по кнопке OK. В результате появится окно Мастера приложений MFC (MFC Application Wizard). Перейдите на вкладку Тип приложений (Application Type). Укажите тип приложения Один документ (Single document). Уберите флажок Использовать библиотеки с поддержкой Юникода. Установите стиль документа: Стандарт MFC. Укажите свойство интерфейса: Использовать классическую закрепленную панель инструментов. Щелкните по кнопке Готово (Finish).
Изменим заголовок окна приложения. Для этого добавим команду
m_pMainWnd->SetWindowTextA("КИРПИЧ");
перед строкой
m_pMainWnd->ShowWindow(SW_SHOW);
в исполняемом файле Dialogs.cpp в методе InitInstance() класса CDialogsApp. Таким образом, установим заголовок "КИРПИЧ" в окне приложения проекта.
Добавление переменных, определяющие цвет пера, кисти и толщины пера, в класс CDialogsDoc.
Добавим переменные COLORREF m_ColorBrushDoc и COLORREF m_ColorPenDoc и переменную BYTE m_WidthPenDoc в секцию public класса CDialogsDoc с помощью контекстного меню Добавить Добавить переменную (Add Add Variable) для этого класса. Инициализируем эти переменные в конструкторе этого класса:
m_ColorBrushDoc = RGB(0, 0, 255); // Цвет кисти - синий
m_ColorPenDoc = RGB(255, 0, 0); // Цвет кисти - красный
Значение переменной m_WidthPenDoc измените на 2. Данные переменные поместили в класс CDialogsDoc для того, чтобы была возможность читать из переменных и записывать информацию в эти переменные. Это будет сделано позже.
Создание рисунка в окне приложения.
Для этого изменим код в методе OnDraw на следующий:
void CDialogsView::OnDraw(CDC* pDC)
{
CDialogsDoc *pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//Новое перо
CPen pen(PS_SOLID, pDoc -> m_WidthPenDoc, pDoc -> m_ColorPenDoc);
CRect rect;
CBrush brush(pDoc -> m_ColorBrushDoc); // Новая кисть
UINT x1, x2, y1, y2;
GetClientRect(&rect); // Метод возвращает координаты клиентской области окна
x1 = rect.right/2-50; y1 = rect.bottom/2-50; // Вычисляем левый верхний угол прямоугольника
x2 = rect.right/2+50; y2 = rect.bottom/2+50; // Вычисляем правый нижний угол прямоугольника
pDC -> SelectObject(&pen); // Подключаем новое перо
pDC -> Rectangle(x1,y1,x2,y2); // Рисуем квадрат. Для заливки, используем белую кисть
pDC -> SelectObject(&brush); // Подключаем синюю кисть
pDC -> Ellipse(x1,y1,x2,y2); // Рисуем окружность. Для заливки используем новую кисть
pDC -> MoveTo(x1,y1);
pDC -> LineTo(x2,y2);
}
Получим при запуске приложения такое окно:
Создание диалогового окна.
С помощью диалогового окна будем вводить толщину пера. Для каждого диалогового окна в приложении создаются ресурс шаблона диалогового окна и класс диалогового окна. Добавление ресурса осуществляется командой Добавить Ресурс из контекстного меню для папки ресурса Dialogs.rs. В окне Добавление ресурса (Add Resource) выберите элемент Dialog и щелкните на кнопке Создать (New). После этого появятся шаблон диалогового окна. Измените заголовок диалогового окна на текст Толщина линии с помощью окна Свойств. Добавьте элемент управления Edit Control в диалоговое окно. Для элемента Edit Control измените свойство ИД (ID): IDC_EDIT1 на значение IDC_PEN_WIDTH.
Диалоговое окно примет вид:
Создание класса для диалогового окна.
Щелкните правой клавишей мыши в свободной от элементов управления области диалогового окна и выполните команду Добавить класс (Add Class). Введите в поле Имя класса (Name Class) текст Dlg‑ имя класса, затем выберите из списка Базовый класс (Base Class) его базовый класс CDialogEx. Нажмите кнопку Готово (Finish).
Связывание элемента управления IDC_PEN_WIDTH диалогового окна Толщина линии с переменной.
Выполните команду Добавить переменную (Add Variable) из контекстного меню для элемента IDC_PEN_WIDTH диалогового окна. Открывается окно Мастер добавления переменной-члена (Add Member Variable Wizard). Выбираем из списка поля Категория (Category) значение Value. В списке Доступ (Access) выбираем пункт public, а в списке Тип переменной (Variable type) ‑ BYTE. Вводим в поле Имя переменной (Variable name) имя переменной класса Dlg: m_WidthDlg. Укажите Минимальное значение: 1, а Максимальное значение: 15. Нажмите кнопку Готово (Finish). В конструкторе класса Dlg значение переменной m_WidthDlg измените 0 на 5.
Команды, которые вызываются при нажатии кнопок ok и Отмена в диалоговом окне.
Обработчики кнопок OK и Отмена работают следующим образом. При нажатии кнопки OK вызывается метод UpdateData(TRUE) и затем закрывается диалоговое окно. При нажатии кнопки Отмена вызывается метод UpdateData(FALSE) и после этого закрывается диалоговое окно. В первом случае идет пересылка информации из элемента управления в переменную, которая связана с элементом. Во втором случае идет обмен информации в обратном порядке.
Ввод одного из параметров пера (толщина) при помощи диалогового окна.