Нет, вы не можете делать то, что просите, но вам, вероятно, не нужно. (Некоторые подробности вашей проблемы могут быть в порядке.) При создании карты сообщений вы указываете и класс, к которому оно применяется, и базовый класс для этого класса. Если ваш производный класс не имеет записи карты сообщений для определенного сообщения, MFC проверит карту сообщений для базового класса. Если карта сообщений базового класса не имеет записи, она проверит карту сообщений на предмет ее базового класса и т. Д.
Например, предположим, у вас есть несколько диалогов с общей функциональностью. Вы можете выложить свои уроки таким образом:
class CMyBaseDialog : public CDialog {
DECLARE_MESSAGE_MAP();
}
BEGIN_MESSAGE_MAP(CMyBaseDialog, CDialog)
// Handle any common messages here...
END_MESSAGE_MAP()
class CDerivedDialog : public CMyBaseDialog {
DECLARE_MESSAGE_MAP();
}
BEGIN_MESSAGE_MAP(CDerivedDialog, CMyBaseDialog)
// Handle any specific messages here...
END_MESSAGE_MAP()
То же самое относится ко всем другим классам на основе HWND, таким как CWnd, CView, CFrame и так далее. Если вы имеете дело с командными сообщениями, у вас есть несколько дополнительных опций.