Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций ООП Visual C++.doc
Скачиваний:
17
Добавлен:
10.11.2019
Размер:
453.12 Кб
Скачать

Работа с клавиатурой.

При нажатии на клавиши клавиатуры формируется сообщение WM_CHAR. Для обработки этого сообщения необходимо:

  1. Открыть ClassWizard (выбрать его в контекстном меню приложения);

  2. Выбрать в списке «класс» CnameView;

  3. Из списка сообщений выбрать WM_CHAR;

  4. Добавить функцию обработчика, нажав кнопку AddFunction;

  5. Выбрать созданную функцию в списке функций класса и нажать кнопку 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.

Редактирование меню.

  1. На вкладке ResourceView найти пункт Menu и выбрать, найти идентификатор IDR_MAINFRAIM и выбрать. Появится редактор меню. Для добавления нового пункта в редакторе меню необходимо выбрать место и нажить клавишу Ins ( для удаления пункта - Del). Чтобы написать название пункта, в контекстном меню выбираем пункт «Свойства», в появившемся диалоговом окне свойств в поле Caption пишем имя пункта. Символ ‘ перед буквой с имени делает ее клавишей ускоренного вызова при открытом меню. В поле ввода Promt можно указать подсказку, которая появляется в строке состояния при выборе пункта меню. Флажок Pop-up позволяет подключить дополнительно подменю.

  2. Подключение кода программы к пункту меню (вывод заранее созданной строки при выборе пункта меню). – открыть ClassWizard на вкладке MessageMeps; - найти идентификатор соответствующего пункта меню; - в списке сообщений выбрать COMMAND, добавить функцию обработчик в класс CNView.

Void NView :: OnPunkt1 ( )

{

CNameDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDoc->st = «Выбран пункт 1»;

Invalidate();

}

После этого в функции OnDraw нужно вывести на экран строку st.

  1. Подключение акселераторов – сочетание клавиш, которые позволяют выбрать пункт меню в любой момент.

На вкладке ресурсов выбрать Accelerator -> IDR_MAINFRAIM , найти идентификатор соответствующего пункта меню и задать сочетание клавиш.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]