Иллюстрированный самоучитель по Visual Studio.Net



Реакция окна на уведомляющие сообщения - часть 3


  • Откройте шаблон диалога и установите курсор мыши на счетчике (IDC_SPIN).

  • В окне Properties нажмите кнопку с подсказкой ControlEvents.

  • В появившемся списке уведомляющих сообщений, которые генерирует счетчик, выберите UDN_DELTAPOS, а в ячейке справа укажите действие — <Add>.

    Перейдите в окно LookDlg.cpp и найдите в карте сообщений новый элемент

    ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN, OnDeltaposSpin)

    который был вставлен инструментом ClassWizard и который означает, что если окну диалога, управляемому классом CLookDlg, придет сообщение UDN_DELTAPOS (Up-Down Notification) от элемента с идентификатором IDC_SPIN, то управление будет передано функции-обработчику OnDeltaposSpin. Теперь в конце файла найдите эту функцию:

    void CLookDlg::OnDeltaposSpin(NMHDR *pNMHDR, LRESOLT *pResult)

    {

    NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

    // TODO: Add your control notification handler code here

    *pResult = 0; }

    Вот здесь происходит то, о чем было сказано выше. Указатель PNMHDR приводится к типу указателя на более сложную структуру NM_UPDOWN. Это нужно для того, чтобы достать из нее необходимую информацию. Теперь с помощью указателя pNMUpDown мы можем добыть требуемое приращение показаний счетчика (pNMUpDown->iDelta). Вместо комментария // TODO: вставьте следующий фрагмент кода:

    //====== Вычисляем желаемую позицию

    int nPos = m_Spin.GetPos() + pNMUpDown->iDelta;

    //====== Если она вне допустимых пределов, то уходим

    if (nPos < 0 || m_nltems <= nPos) return;

    //====== Корректируем позицию ползунка

    m_Slider.SetPos(nPos);

    //====== Расшифровываем код ошибки

    Getlnfo(nPos);

    //====== Вызываем обмен данными с элементами окна диалога

    UpdateData(FALSE);

    Здесь уместно напомнить, что Studio.Net 7.0, как и Visual Studio 6, позволяет форматировать введенный текст так, как это принято в сообществе разработчиков. Выделите весь код функции и дайте команду Edit > Advanced > Format Selection или Alt+F8.

    В коде мы используем данные (m_Spin, m_nltems, m_Slider) и метод (Getlnfо), которых еще нет в классе, но вы, наверное, имеете некоторый опыт программирования и знаете, что разработка часто идет в обратном порядке.


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