【发布时间】:2014-05-15 16:45:59
【问题描述】:
我正在使用 MFC100、VS2010、MDI。
我放弃了 CPreviewView 的基本功能。
我希望它的行为与我的 CMyView(这是一个 CView)非常相似
CMyView 和 CMyPreviewView 不在同一个类继承路径中。
所以我想同时继承 CPreviewView 消息映射和 CMyView 消息映射。目前,它只继承 CPreviewView 消息映射。
BEGIN_MESSAGE_MAP(CMyPreviewView, CPreviewView)
//{{AFX_MSG_MAP(CMyPreviewView)
ON_COMMAND(AFX_ID_PREVIEW_CLOSE, OnPreviewClose)
ON_COMMAND(AFX_ID_PREVIEW_PRINT, OnPreviewPrint)
ON_UPDATE_COMMAND_UI(ID_WINDOW_NEW, OnUpdateWindowNew)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
有什么想法吗?我看到了类似的东西
ALT_MSG_MAP(UINT msgMapID)
但这仅适用于 ATL。我可以复制并粘贴我的整个 CMyView 消息映射,但是因为有 300 多个处理程序,这真的很混乱。
【问题讨论】:
-
我好像记得很久以前读过一篇关于 MFC 的“多重继承”的文章,它并不漂亮。有什么理由不能只使用 CMyView 并将 CMyPreviewView 嵌入其中?应该足够简单。
-
CMyPreviewView 和 CMyView 是完全不同的类。 “CMyPreviewView->CPreviewView->CScrollView...->CView”和“CMyView->CView”它们不能在同一个继承路径中。我只是希望它们具有相同的命令处理程序。无需复制粘贴和维护 2 个位置。
-
不是我的意思,但您似乎找到了解决方案。