Здесь мы рассмотрим модификацию той части главного меню, которая постоянна, независимо от активного окна-фрейма. Если вам требуется модифицировать меню только для окна-фрейма вашей компоненты (меню «Действия» и т.д.), то смотрите статью Создание окон-фреймов в главном окне.
Для добавления меню мы используем класс CAppFrame, функцию AddMenu:
После добавления вышеуказанного кода в процедуру инициализации нашей компоненты, мы можем видеть новое, добавленное, меню в главном меню 1С. Однако, все пункты меню недоступны. Рассмотрим, как сделать их доступными, а также, как получать сообщения о выборе пунктов нашего нового меню.
В этом нам поможет класс CModule7. Этот класс позволяет внешней компоненте включиться в процесс обработки оконных сообщений в 1С. Сначала мы должны определить некий класс-наследник класса CModule7:
Далее определим в классе нашего приложения переменную типа CTestModule:
При инициализации нашей компоненты «подключим» CTestModule к 1С:
Все, модуль включен в процесс обработки оконных сообщений 1С. Осталось определить обработчики команд нашего меню. Класс CModule7 является наследником стандартного MFC-класса CCmdTarget. Поэтому у него есть своя карта сообщений. Эта карта редактируется стандартным образом, так же, как и для любого объекта типа CWnd или CView:
Заголовок класса:
Реализация класса:
Естественно, мы также должны добавить в класс функции OnOurMenuCommand (обработка выбора нашего пункта меню) и OnUpdateOurMenuCommand (для переключения доступности/недоступности нашего пункта меню). К сожалению, эти операции приходится делать вручную, т.к. AppWizard почему-то не хочет автоматом подхватывать классы-наследники CModule7.