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

         

Меню без класса CMenu


Как и для других элементов пользовательского интерфейса, для управления меню в состав библиотеки классов MFC включен специальный класс - класс CMenu. Класс CMenu - один из самых незаметных классов библиотеки MFC. Ваше приложение может активно работать с меню, но все же в исходных текстах вы не найдете ни одного объекта этого класса.

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

// Объявляем указатель на шаблон документа

CSingleDocTemplate* pDocTemplate;

// Создаем шаблон документа

pDocTemplate = new CSingleDocTemplate(

   IDR_MAINFRAME,                // Идентификатор меню, панели

                                 // управления и пиктограммы

   RUNTIME_CLASS(CSingleDoc),    // Класс документа

   RUNTIME_CLASS(CMainFrame),    // Класс главного окна

   RUNTIME_CLASS(CSingleView));  // Класс окна просмотра

В случае многооконного приложения дополнительно указываются ресурсы, используемые когда все окна просмотра документов закрыты. Все эти ресурсы имеют один и тот же идентификатор. В примере, представленном ниже, это идентификатор IDR_MAINFRAME:

// Создаем главное окно многооконного приложения

CMainFrame* pMainFrame = new CMainFrame;

// Загружаем ресурсы с идентификатором IDR_MAINFRAME,

// в том числе и меню

if(!pMainFrame->LoadFrame(IDR_MAINFRAME))

   return FALSE;

В приложениях MFC AppWizard, имеющих однооконный или многооконный интерфейс, меню создается и изменяется самой библиотекой MFC. Несмотря на это, вы также можете управлять меню. Самый простой способ заключается в обработке команд обновления от меню. Проблеме использования этих команд мы посвятили раздел “Класс CCmdUI”.

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

В таких приложениях, как правило, создается главное окно на основе класса CFrameWnd. Для этого сначала создается соответствующий объект класса CFrameWnd, а затем вызывается либо метод Create, либо метод LoadFrame, который в свою очередь уже создает само окно вместе с меню.



Содержание раздела