Есть задача — к стандартному меню, возикающему над EditBox'ом пр нажатии пр. кнопки мыши (копировать/вставить/вырезать и пр.) нужно добавить несколько своих пунктов.
Как это сделать в программе, использующей MFC, чтобы при этом остались старые пункты вместе со своими обработчиками (т.е. чтобы функции вставить/копировать/и пр. продолжали работать наравне с моими доп. функциями)?
29.01.05 13:21: Перенесено из 'C/C++'
29.01.05 13:52: Перенесено модератором из 'WIN API' — Odi$$ey
Здравствуйте, PolA, Вы писали:
PA>Есть задача — к стандартному меню, возикающему над EditBox'ом пр нажатии пр. кнопки мыши (копировать/вставить/вырезать и пр.) нужно добавить несколько своих пунктов.
PA>Как это сделать в программе, использующей MFC, чтобы при этом остались старые пункты вместе со своими обработчиками (т.е. чтобы функции вставить/копировать/и пр. продолжали работать наравне с моими доп. функциями)?
Специально для этого есть форумы MFC (
www.rsdn.ru/forum/?group=mfc) и WinAPI (
www.rsdn.ru/forum/?group=winapi)
Здравствуйте, PolA, Вы писали:
PA>Есть задача — к стандартному меню, возикающему над EditBox'ом пр нажатии пр. кнопки мыши (копировать/вставить/вырезать и пр.) нужно добавить несколько своих пунктов.
Сабклассируйте EDIT, отловите сообщение WM_INITMENUPOPUP и в его обработчике (после выполнения стандартных действий) добавьте свои элементы. Ну а обрабатывать их нужно будет в ON_COMMAND().
P.S.
Николай прав, это лучше в форуме "MFC" спрашивать.
Будем бомбить...
[ posted via RSDN@Home 1.1.4 beta 4 r309, accompanied by Motorhead — Lost In The Ozone ]
Здравствуйте, Кодт, Вы писали:
К>Во! Точно, вспомнил как это сообщение называется.
Ученики мне рассказывали, что китайские программисты знают ВыньАПИ наизусть — сообщения, названия функций, списки параметров, поля структур...
Правда это или нет, не знаю — но с тех пор люблю говорить "я вам не китайская девочка, я в MSDN посмотрю..."
К>Для сабклассирования достаточно, как и полагается в MFC, завести наследника от CEdit, и перекрыть уже существующий метод CWnd::OnInitMenuPopup(); далее, в диалоге подцепить к контролу переменную этого класса, и всё готово.
Угу, excellent.
Я просто предпочинаю объяснять "на АПИ" ибо расширяет. Подцепляние осуществляется при помощи DDX_Control(), можно еще посмотреть в сторону CWnd::SubclassWindow(), если надо что-то "глубокое" делать.
[ posted via RSDN@Home 1.1.4 beta 4 r309, accompanied by Motorhead — Sex & Death ]
[ posted via RSDN@Home 1.1.4 beta 4 r309, accompanied by Motorhead — Bad Woman ]