
- •Структура программы.
- •Создание простейшего приложения Windows.
- •Работа с пером.
- •Работа с кистью.
- •Работа со шрифтами.
- •Работа с клавиатурой.
- •Работа с мышью.
- •Редактирование меню.
- •Кнопки на панели инструментов.
- •Блокировка и пометка пунктов меню.
- •Диалоговые окна.
- •Флажки и переключатели.
- •Списки.
- •Методы выбора.
- •Методы параметров рисунка.
- •Методы цветовой палитры.
- •Методы атрибутов рисунка.
- •Растровые методы.
- •Методы отсечения.
- •Методы рисования линии.
- •Методы простых рисунков.
- •Методы рисования эллипса и многоугольника.
- •Текстовые методы.
Работа с клавиатурой.
При нажатии на клавиши клавиатуры формируется сообщение WM_CHAR. Для обработки этого сообщения необходимо:
Открыть ClassWizard (выбрать его в контекстном меню приложения);
Выбрать в списке «класс» CnameView;
Из списка сообщений выбрать WM_CHAR;
Добавить функцию обработчика, нажав кнопку AddFunction;
Выбрать созданную функцию в списке функций класса и нажать кнопку EditCod для ее редактирования;
Например, будем выводить символы, набранные на клавиатуре.
Перед этим необходимо создать переменную st строкового типа, как приводилось ранее.
Void NView :: OnChar (UINT nChar; UINT nRepint; UINT nFlags)
{
CNDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// К созданной строке добавляем символ с клавиатуры nChar //
pDoc->st+ = nChar;
Invalidate();
}
После этого в функции OnDraw нужно вывести на экран строку st.
Кроме сообщения WM_CHAR ОС посылает сообщения WM_KEYDOUN и WM_KEYUP. ClassWizard может предоставить обработчики OnKeyDoun и OnKeyUp соответственно. Схема работы с ними такая же.
Работа с мышью.
Мышь может служить источником нескольких сообщений : WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_MOUSEMOVE и т.д. Обработка этих сообщений производится с использованием ClassWizard. Рассмотрим работу на примере нажатия левой кнопки мыши. Пусть выводится созданная ранее строка в месте указанном мышью.
Предварительно необходимо создать две переменные x и y целого типа в классе CNView для начальных точек. Также создадим переменную st строкового типа и зададим ей значение.
После этого:
В ClassWizard создадим функцию OnLButtonDoWn обработчик сообщения WM_LBUTTONDOWN и отредактируем ее.
Void Nview :: OnLButtonDoWn (UINT nFlags; CPoint Point)
{
x = Point.x; // Задание начальных координат для вывода строки //
y = Point.y;
Invalidate();
}
После этого в функции OnDraw нужно вывести на экран строку st.
Редактирование меню.
На вкладке ResourceView найти пункт Menu и выбрать, найти идентификатор IDR_MAINFRAIM и выбрать. Появится редактор меню. Для добавления нового пункта в редакторе меню необходимо выбрать место и нажить клавишу Ins ( для удаления пункта - Del). Чтобы написать название пункта, в контекстном меню выбираем пункт «Свойства», в появившемся диалоговом окне свойств в поле Caption пишем имя пункта. Символ ‘ перед буквой с имени делает ее клавишей ускоренного вызова при открытом меню. В поле ввода Promt можно указать подсказку, которая появляется в строке состояния при выборе пункта меню. Флажок Pop-up позволяет подключить дополнительно подменю.
Подключение кода программы к пункту меню (вывод заранее созданной строки при выборе пункта меню). – открыть ClassWizard на вкладке MessageMeps; - найти идентификатор соответствующего пункта меню; - в списке сообщений выбрать COMMAND, добавить функцию обработчик в класс CNView.
Void NView :: OnPunkt1 ( )
{
CNameDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->st = «Выбран пункт 1»;
Invalidate();
}
После этого в функции OnDraw нужно вывести на экран строку st.
Подключение акселераторов – сочетание клавиш, которые позволяют выбрать пункт меню в любой момент.
На вкладке ресурсов выбрать Accelerator -> IDR_MAINFRAIM , найти идентификатор соответствующего пункта меню и задать сочетание клавиш.