Назад | Начало урока |
Содержание

Ответы 7

Вопросы

  1. Какое сообщение о событии посылается в очередь сообщений окна при выборе пункта меню?

    COMMAND (на самом деле WM_COMMAND но в мастере для сокращения фигурирует COMMAND)

  2. Как связать меню с диалоговым окном?

    В конструкторе вызовите окно со свойствами окна данного приложения. Из ниспадающего меню выберите пункт меню.Можно так же воспользоваться функцией SetMenu.

  3. Какой существующий класс нужно указать для обработки сообщений о событии для меню?

    Диалоговый класс,принадлежащий окну,в котором произошло событие меню.

  4. Каким сообщением о событии должно вызываться всплывающее меню?

    Сообщением о событии WM_CONTEXTMENU.

Упражнения

  • Добавьте кнопку в главное окно и сделайте так,чтобы по щелчку на ней вызывалась та же самая функция,что и при выборе пункта меню Hello.

    Выполните следующее:

    1. Дополните окно приложения кнопкой с идентификатором IDC_HELLO.Введите &Hello в поле Caption.

    2. С помощью Мастера свяжите с данной кнопкой функцию.Примите предложенное по умолчанию имя функции OnBnClickedHello.

    3. В функции OnBnClickedHello вызовите функцию OnFileHello.

  • Измените контекстное меню приложения так,чтобы оно использовало раскрывающееся меню Help в качестве всплывающего меню.

    Выполните следующее:

    1. Отредактируйте функцию OnContextMenu,изменив выделенную строку кода:


      void CMenusDlg::OnContextMenu(CWnd* pWnd, CPoint point)
      {
      CMenu *pMenu;
      //получить указатель на меню
      pMenu = GetMenu();
      //получить указатель на подменю
      pMenu = pMenu->GetSubMenu(1);
      //открыть его как контекстное меню
      pMenu->TrackPopupMenu(TPM_CENTERALIGN | TPM_LEFTBUTTON,
      point.x,point.y,pWnd,NULL);
      }

    Назад | Начало урока | Вверх |
    Содержание

    Hosted by uCoz