MFC day07

目录:
创建单文档视图应用程序
创建多文档视图应用程序
1 创建单文档视图应用程序
1.1 问题
创建一个单文档视图应用程序。

1.2 方案
创建一个单文档视图应用程序.

1.3 步骤
实现此案例需要按照如下步骤进行。

步骤一:添加应用程序类

添加CWinApp类的派生类CSDIApp类,创建应用程序窗口类并创建单文档模板。代码如下所示:

class CSDIApp : public CWinApp
{
public:
virtual BOOL InitInstance( );
};
CSDIApp theApp;
BOOL CSDIApp::InitInstance( )
{
CSingleDocTemplate * pTemplate = NULL;
pTemplate = new CSingleDocTemplate(
IDR_MAINFRM,
RUNTIME_CLASS(CSDIDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CSDIView) );
AddDocTemplate( pTemplate );
OnFileNew();
m_pMainWnd->ShowWindow( SW_SHOW );
m_pMainWnd->UpdateWindow( );
return TRUE;
}
步骤二:可编辑视图窗口类

添加CEditView类的派生类CSDIView类,可编辑视图窗口类。代码如下所示:

class CSDIView : public CEditView
{
public:
DECLARE_DYNCREATE( CSDIView )
};
IMPLEMENT_DYNCREATE( CSDIView, CEditView )
步骤三:文档类

添加CDocunment类的派生类CSDIdoc类,文档类。代码如下所示:

class CSDIDoc : public CDocument
{
public:
DECLARE_DYNCREATE( CSDIDoc )
};
IMPLEMENT_DYNCREATE( CSDIDoc, CDocument )
步骤四:添加主窗口框架类

添加CFrameWnd类的派生类CMainFrame类,主窗口。代码如下所示:

class CMainFrame : public CFrameWnd
{
public:
DECLARE_DYNCREATE( CMainFrame )
};
IMPLEMENT_DYNCREATE( CMainFrame, CFrameWnd )
1.4 完整代码
本案例的完整代码如下所示:

class CSDIDoc : public CDocument
{
public:
DECLARE_DYNCREATE( CSDIDoc )
};
IMPLEMENT_DYNCREATE( CSDIDoc, CDocument )
class CSDIView : public CEditView
{
public:
DECLARE_DYNCREATE( CSDIView )
};
IMPLEMENT_DYNCREATE( CSDIView, CEditView )
class CMainFrame : public CFrameWnd
{
public:
DECLARE_DYNCREATE( CMainFrame )
};
IMPLEMENT_DYNCREATE( CMainFrame, CFrameWnd )
class CSDIApp : public CWinApp
{
public:
virtual BOOL InitInstance( );
};
CSDIApp theApp;
BOOL CSDIApp::InitInstance( )
{
CSingleDocTemplate * pTemplate = NULL;
pTemplate = new CSingleDocTemplate(
IDR_MAINFRM,
RUNTIME_CLASS(CSDIDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CSDIView) );
AddDocTemplate( pTemplate );
OnFileNew();
m_pMainWnd->ShowWindow( SW_SHOW );
m_pMainWnd->UpdateWindow( );
return TRUE;
}
运行结果:如图-1所示

图-1

2 创建多文档视图应用程序
2.1 问题
创建一个多文档视图应用程序。

2.2 方案
创建一个多文档视图应用程序。

2.3 步骤
实现此案例需要按照如下步骤进行。

步骤一:添加应用程序类

添加CWinApp类的派生类CMDIApp类,创建应用程序窗口类并创建多文档模板。当,用户点击新建时,创建新的文档视图窗口。代码如下所示:

class CMDIApp : public CWinApp
{
public:
virtual BOOL InitInstance( );
DECLARE_MESSAGE_MAP( )
public:
afx_msg void OnNew( );
};
CMDIApp theApp;
BEGIN_MESSAGE_MAP( CMDIApp, CWinApp )
ON_COMMAND( ID_NEW, OnNew )
END_MESSAGE_MAP( )
BOOL CMDIApp::InitInstance( )
{
CMultiDocTemplate * pTemplate = NULL;
pTemplate = new CMultiDocTemplate(
IDR_CHILDFRAME,
RUNTIME_CLASS( CMDIDoc ),
RUNTIME_CLASS( CChildFrame ),
RUNTIME_CLASS( CMDIView ) );
AddDocTemplate( pTemplate );
CMainFrame * pFrame = new CMainFrame;
pFrame->LoadFrame( IDR_MAINFRAME );
m_pMainWnd = pFrame;
m_pMainWnd->ShowWindow( SW_SHOW );
m_pMainWnd->UpdateWindow( );
OnFileNew( );
return TRUE;
}
void CMDIApp::OnNew( )
{
OnFileNew( );
}
步骤二:文档类

添加CDocunment类的派生类CMDIDoc类,创建文档类。代码如下所示:

class CMDIDoc : public CDocument
{
public:
DECLARE_DYNCREATE( CMDIDoc )
};
IMPLEMENT_DYNCREATE( CMDIDoc, CDocument )
步骤三:可编辑视图窗口类

添加CEditView类的派生类CMDIView类,可编辑视图窗口类。代码如下所示:

class CMDIView : public CEditView
{
public:
DECLARE_DYNCREATE( CMDIView )
DECLARE_MESSAGE_MAP( )
};
IMPLEMENT_DYNCREATE( CMDIView, CEditView )
BEGIN_MESSAGE_MAP( CMDIView, CEditView )
END_MESSAGE_MAP( )
步骤四:管理窗口类

添加CMDIChildWnd类的派生类CChildFrame类,Windows多文档界面(MDI)子窗口及用于管理窗口的成员。代码如下所示:

class CChildFrame : public CMDIChildWnd
{
public:
DECLARE_DYNCREATE( CChildFrame )
};
IMPLEMENT_DYNCREATE( CChildFrame, CMDIChildWnd )
步骤五:添加多文档管理子界面类

添加CMDIFrameWnd类的派生类CMainFrame类, Windows多文档界面(MDI)子窗口的功能和管理窗口。代码如下所示:

class CMainFrame : public CMDIFrameWnd
{
public:
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP( CMainFrame, CMDIFrameWnd )
END_MESSAGE_MAP( )
2.4 完整代码
本案例的完整代码如下所示:

class CMDIDoc : public CDocument
{
public:
DECLARE_DYNCREATE( CMDIDoc )
};
IMPLEMENT_DYNCREATE( CMDIDoc, CDocument )
class CMDIView : public CEditView
{
public:
DECLARE_DYNCREATE( CMDIView )
DECLARE_MESSAGE_MAP( )
};
IMPLEMENT_DYNCREATE( CMDIView, CEditView )
BEGIN_MESSAGE_MAP( CMDIView, CEditView )
END_MESSAGE_MAP( )
class CChildFrame : public CMDIChildWnd
{
public:
DECLARE_DYNCREATE( CChildFrame )
};
IMPLEMENT_DYNCREATE( CChildFrame, CMDIChildWnd )
class CMainFrame : public CMDIFrameWnd
{
public:
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP( CMainFrame, CMDIFrameWnd )
END_MESSAGE_MAP( )
class CMDIApp : public CWinApp
{
public:
virtual BOOL InitInstance( );
DECLARE_MESSAGE_MAP( )
public:
afx_msg void OnNew( );
};
CMDIApp theApp;
BEGIN_MESSAGE_MAP( CMDIApp, CWinApp )
ON_COMMAND( ID_NEW, OnNew )
END_MESSAGE_MAP( )
BOOL CMDIApp::InitInstance( )
{
CMultiDocTemplate * pTemplate = NULL;
pTemplate = new CMultiDocTemplate(
IDR_CHILDFRAME,
RUNTIME_CLASS( CMDIDoc ),
RUNTIME_CLASS( CChildFrame ),
RUNTIME_CLASS( CMDIView ) );
AddDocTemplate( pTemplate );
CMainFrame * pFrame = new CMainFrame;
pFrame->LoadFrame( IDR_MAINFRAME );
m_pMainWnd = pFrame;
m_pMainWnd->ShowWindow( SW_SHOW );
m_pMainWnd->UpdateWindow( );
OnFileNew( );
return TRUE;
}
void CMDIApp::OnNew( )
{
OnFileNew( );
}
运行结果:如图-2所示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值