C++ 客户端CMDIFrameWndEx

C++ 客户端CMDIFrameWndEx,c++,mfc,C++,Mfc,下午好! 我正在将我的应用程序从CMDIFrameWnd更新到CMDIFrameWndEx,并面临大型机的客户端区域问题。在我拥有m_hWndMDIClient之前,我用我的类将其子类化。现在我得了脾脏炎,它只会让我头痛!现在我不能再分类了。这就是为什么我要这么做: mdiCliWnd_.Attach(m_wndClientArea.Detach()); mdiCliWnd_.Invalidate(); mdiCliWnd_.UpdateWindow(); m_wndClientArea.Att

下午好! 我正在将我的应用程序从CMDIFrameWnd更新到CMDIFrameWndEx,并面临大型机的客户端区域问题。在我拥有m_hWndMDIClient之前,我用我的类将其子类化。现在我得了脾脏炎,它只会让我头痛!现在我不能再分类了。这就是为什么我要这么做:

mdiCliWnd_.Attach(m_wndClientArea.Detach());
mdiCliWnd_.Invalidate();
mdiCliWnd_.UpdateWindow();
m_wndClientArea.Attach(mdiCliWnd_.Detach());
但我甚至无法检查它是如何工作的,因为现在我遇到了一个问题,我应该将我的客户端区域的CWnd提供给另一个函数,但是m_WndClient区域受到保护。
所以我的问题是:我可以用另一种方式对自己的类进行子类化吗?如果我不能,我应该如何使用m_wndClientArea将其赋予其他函数?

子类化的原因是什么

如果只是绘制背景,请使用新的虚拟函数: OnEraseMDIClientArea

否则,使用标准子类化是没有问题的


由于mdi客户端窗口的HWND句柄已附加到MFC CWnd类对象,因此不能再次使用MFC子类化。

主要原因是在客户端区域使用OnRButtonUp(etc)函数!我在这里读到了你关于“经典子类化”的回答,但我不明白,我应该对-CMDIClientAreaWnd或CMDIFrameWndEx进行什么样的子类化,以及如何进行子类化?你是对句柄而不是对象进行子类化!m_HwndMDI客户端。检测RBUTTOUP/Down的原因是什么?上下文菜单应该用WM_CONTEXTMENU实现,这个消息被传递到父窗口…不幸的是,我不知道如何定义句柄的子类。。正如我所理解的,SubclassWindow(pParentFrm_u->m_hwndmiclient)是MFC子类化,因为它给了我已经子类对象的错误。所以,你能给我举个“standartd子类a句柄”的例子吗。第一个链接,正如我从链接中了解到的,我只能子类化过程,而不能子类化类,是吗?