Учебник по Visual C++ .Net


Визуальное редактирование данных - часть 3


  1. Поставьте фокус на элемент CDrawView в представлении классов (Class View) и перейдите в окно Properties.

  2. Нажав кнопку Events, выберите идентификатор ID_EDIT_NEWPOLY, раскройте маркер (+) и выберите COMMAND (первую из двух выпавших строк).

  3. Создайте обработчик, выбрав <Add> в выпадающем списке справа от COMMAND.

Рис. 5.3. Редактируемый полигон

В теле обработчика следует установить флаги состояния, уничтожить все вершины дежурного полигона и перерисовать представление:

void CDrawView::OnEditNewpoly(void)

{

//====== Включаем/Выключаем режим ввода вершин

m_bNewPoints = !m_bNewPoints;

//=== Снимаем флаги редактирования перетаскиванием

m_bReady = false;

m_bLock = false;

//====== Если режим включен, то уничтожаем вершины

if (m_bNewPoints)

{

GetDocument()->m_Poly.m_Points.clear() ;

Invalidate();

}

}

Запустите приложение, выберите шаблон Draw и дайте команду Edit > New Poly. Щелкайте левой кнопкой мыши разные места клиентской области окна и наблюдайте за трансформациями полигона m_Poly при добавлении в контейнер его точек новых значений. Мысленно проследите за преобразованиями координат, которые происходят в эти моменты. Вы помните, что мышь дает аппаратные координаты, а в контейнер попадают World-координаты вершин полигона?




Начало  Назад  Вперед