Читаем Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT полностью

 // окно приложения не является диалоговой панелью этот код

 // не нужен

 SetIcon(m_hIcon,TRUE); // Выбираем пиктограмму большого

                        // размера

 SetIcon(m_hIcon,FALSE); // Выбираем пиктограмму маленького

                         // размера

 // TODO: Здесь вы можете выполнить дополнительную

 // инициализацию

 return TRUE;

}

Метод OnSysCommand (системное меню)

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

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

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

Параметр nID содержит идентификатор строки системного меню, вызвавшего сообщение. Младшие четыре бита параметра nID используются операционной системой и могут принимать любые значения. Параметр nID (без учета четырех младших бит) может принимать одно из следующих значений.

Параметр nIDОписание
SC_CLOSEЗакрывает объект CWnd
SC_HOTKEYАктивизирует объект CWnd, связанный с комбинацией клавиш, определенной приложением. Младшее слово параметра lParam содержит идентификатор активизируемого окна
SC_HSCROLLСвертка по горизонтали
SC_KEYMENUВыбор из меню при помощи комбинации клавиш
SC_MAXIMIZE, SC_ZOOMМаксимизировать объект CWnd
SC_MINIMIZE, SC_ICONМинимизировать объект CWnd
SC_MOUSEMENUВыбор из меню при помощи мыши
SC_MOVEПеремещение окна CWnd
SC_NEXTWINDOWПереключение на следующее окно
SC_PREVWINDOWПереключение на предыдущее окно
SC_RESTOREВосстановление нормального расположения и размера окна
SC_SCREENSAVEЗапустить приложение, предохраняющее экран монитора, указанное в секции [boot] файла SYSTEM.INI
SC_SIZEИзменить размер окна CWnd
SC_TASKLISTЗапустить или активизировать приложение Task Manager
SC_VSCROLLСвертка по вертикали

Если строка системного меню выбрана с использованием мыши, параметр lParam содержит координаты курсора. Младшее слово определяет х-координату, а старшее y-координату.

Виртуальный метод 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 на экране.

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных