
- •Создание рисунка в окне приложения.
- •Создание диалогового окна.
- •Создание класса для диалогового окна.
- •Команды, которые вызываются при нажатии кнопок ok и Отмена в диалоговом окне.
- •Добавление команды “Толщина линии” в меню “Перо”. Добавление обработчика OnPenWidth для команды “Толщина линии”
- •Отображение диалогового окна.
- •Добавление стандартного диалога для выбора цвета кисти.
- •Добавление переменной в класс cDialogsView для определения дополнительной цветовой палитры стандартного диалога.
- •Добавление команды “Цветовая палитра” в меню “Перо”. Код функции команды “Цветовая палитра для кисти”.
- •Сохранение результатов выбора цвета и толщины для пера и цвет кисти.
- •Самостоятельная работа
Добавление команды “Цветовая палитра” в меню “Перо”. Код функции команды “Цветовая палитра для кисти”.
Команде “Цветовая палитра” присвоим идентификатор ID_PEN_COLOR_PALITTE в меню “Перо”. Свяжем этот идентификатор с сообщением COMMAND. Добавим функцию для обработки этого сообщения таким же образом, как сделали для команды “Толщина линии пера”. Введем следующий код для обработчика:
void CDialogsView::OnPenColorPalitte()
{
CColorDialog dlg; // Создание объекта диалогового класса
CDialogsDoc *pDoc = GetDocument(); // Запоминаем адрес документа
// Инициализация переменных структуры m_cc класса CColorDialog
dlg.m_cc.lpCustColors = MyColors;// Пересылаем адрес массива с кодами цветов дополнительной палитры в указатель lpCustColors
dlg.m_cc.rgbResult = pDoc->m_ColorBrushDoc;; // Определяем текущее значение для цвета кисти.
dlg.m_cc.Flags |= CC_RGBINIT; // Определяем бит флагов режима работы диалога
if(dlg.DoModal() == IDCANCEL) return; // Если диалог завершился неудачно, то уходим
pDoc-> m_ColorBrushDoc = dlg.m_cc.rgbResult;// Пересылаем цвет в класс документов
Invalidate(); // Объявляем поврежденной всю клиентскую область окна
}
Сохранение результатов выбора цвета и толщины для пера и цвет кисти.
Загрузим в редактор текста метод Serialize класса CDialogsDoc. Изменим метод следующим образом:
void CDialogsDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{// запись информации в файл
ar << m_ColorBrushDoc << m_ColorPenDoc;
ar << m_WidthPenDoc;
}
else
{// чтение информации из файда
ar >> m_ColorBrushDoc >> m_ColorPenDoc;
ar >> m_WidthPenDoc;
}
}
С помощью данного метода мы будем сохранять цвет кисти и толщину пера.
Изменение информации, которая выводиться при помощи диалогового окна О проекте Dialogs.
Откройте Окно ресурсов Dialogs. Двойным щелчком по идентификатором IDD_ABOUTBOX загрузите в редактор диалоговых окон. С помощью контекстного меню для статического текста диалогового окна перейдите в окно Свойства. Измените свойство Подпись как отображено ниже.
Самостоятельная работа
Объясните, почему нельзя указать доступ «private:» для переменных: COLORREF m_ColorBrushDoc, COLORREF m_ColorPenDoc
Добавить команду «Цвет пера» в меню «Перо» для выбора цвета пера с помощью диалогового окна: