Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Метод OnSysCommand (системное меню) - часть 2


Виртуальный метод OnSysCommand определен в классе CDialog и выполняет обработку сообщений WM_SYSCOMMAND в соответствии с их идентификаторами. Естественно, он не может правильно обработать сообщения от строк меню добавленных вами.

Чтобы обработать сообщения от новых строк системного меню (для нашего приложения это строка About), необходимо переопределить виртуальный метод OnSysCommand.

Сообщения, имеющие стандартные идентификаторы nID, необходимо передавать для обработки по умолчанию методу OnSysCommand базового класса CDialog.

void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

      // Пользователь выбрал строку About системного меню

      if((nID & 0xFFF0) == IDM_ABOUTBOX)

      {

             CAboutDlg dlgAbout;

             dlgAbout.DoModal();

      }

      // Все другие сообщение передаем для обработки методу

     

// OnSysCommand базового класса CDialog

      else

     

{

             CDialog::OnSysCommand(nID, lParam);

      }

}

Реализация метода OnSysCommand, созданная MFC AppWizard для класса CDialogDlg, определяет причину вызова. Если метод OnSysCommand вызван потому что пользователь выбрал из системного меню строку About, создается объект класса CAboutDlg. Класс CAboutDlg представляет собой класс для управления диалоговой панелью About. Затем вызывается метод DoModal, который и отображает диалоговую панель About на экране.

Если метод OnSysCommand вызван по любой другой причине, тогда вызывается метод OnSysCommand базового класса CDialog, который выполняет обработку этого сообщения по умолчанию.

Описание класса CAboutDlg, а также определение его методов, содержится в файле DialogDlg.cpp (листинг 4.4). Мы не будем подробно описывать класс CAboutDlg, так как он фактически представляет собой упрощенный вариант класса CDialogDlg.




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



Книжный магазин