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



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


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

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

  • Создайте обработчик, выбрав <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-координаты вершин полигона?




    Содержание  Назад  Вперед