Design pattern MVC via MFC

>> Thursday, October 8, 2009


Here's the simplest implementation of MVC patterns in MFC. There're 4 classes participating in this pattern.

#include <afxwin.h>
#include "resource.h"


class CMyView: public CView
{
  protected:
    CMyView(){}
    ;
  DECLARE_DYNCREATE(CMyView)public:
    virtual void OnDraw(CDC *pDC);
};
IMPLEMENT_DYNCREATE(CMyView, CView)void CMyView::OnDraw(CDC *pDC){}

class CMyWnd: public CFrameWnd
{
  public:
    CMyWnd(){}
    DECLARE_DYNCREATE(CMyWnd)
};
IMPLEMENT_DYNCREATE(CMyWnd, CFrameWnd)

class CMyDoc: public CDocument
{
  protected:
    CMyDoc(){}
    ;
  DECLARE_DYNCREATE(CMyDoc)public:
};
IMPLEMENT_DYNCREATE(CMyDoc, CDocument)class CMyApp: public CWinApp
{
  public:
    virtual BOOL InitInstance();
};
CMyApp theApp;


BOOL CMyApp::InitInstance()
{
  CSingleDocTemplate *pDocTemplate;
  pDocTemplate = new CSingleDocTemplate(IDR_MENU1, RUNTIME_CLASS(CMyDoc),
    RUNTIME_CLASS(CMyWnd), RUNTIME_CLASS(CMyView));
  AddDocTemplate(pDocTemplate);
  CCommandLineInfo cmdInfo;
  ParseCommandLine(cmdInfo);
  if (!ProcessShellCommand(cmdInfo))
    return FALSE;
  m_pMainWnd->ShowWindow(SW_SHOW);
  return TRUE;
}


0 comments: