分类: C/C++
2008-03-10 19:37:43
#include "MDIChild.H"
class CMainFrame : public CFrameWnd
{
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// Attributes
public:
CMDIChild m_Child; ///////////////////////////////
.....
} 第四步:在 OnCreate() 事件中加入m_Child.InitMainWnd(this)。 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
......
RECT Rect;
SetRect(&Rect, 0,64,800, 574); // 非模子窗口的活动区域,没想出自动计算的好办法,
m_Child.InitMainWnd(this, &Rect); //所以只能手工设置。
} 第五步:增加菜单事件 #include "Dlg1.H"
void CMainFrame::OnDialog1()
{
CDlg1 *pDlg = NULL;
char *sName = "功能1"; ////////////////////////////////
if(!m_Child.GetClassChild(sName))
{
pDlg = new CDlg1;
if(!pDlg) return;
pDlg->Create(IDD_DIALOG1, this);
}
m_Child.ADD((CView*)pDlg, sName);
} 第六步:补充CDlg1是一个CDialog的弹出窗口,将普通弹出窗口转变成非模窗口的方法在网上有很多,这里就不多说了,也可以自己看代码。非模子窗口是用名称进行管理的,就是说可以生成两个基类相同的窗口,但是它们 在 m_Child.ADD 的时候要用不同的名称登记。