Пятница, Ноябрь 27, 2020

CDocument3

//В меню добавить пункт About
#include<afxwin.h>
#include"resource.h"
class CMyDoc:public CDocument
{
protected:
    CMyDoc();
    CString m_csDate;
    DECLARE_DYNCREATE(CMyDoc)
public:
    CString GetDate();
    void SetString(CString);
    void OnAbout();
private:
    DECLARE_MESSAGE_MAP();
};

IMPLEMENT_DYNCREATE(CMyDoc,CDocument)
CMyDoc::CMyDoc()
{
    m_csDate="Данные";
}
CString CMyDoc::GetDate()
{
    return m_csDate;
}
void CMyDoc::OnAbout()
{
    SetString("Понимаем как работает CDocument");
    UpdateAllViews(NULL);
}
void CMyDoc::SetString(CString s)
{
    m_csDate=s;
}
BEGIN_MESSAGE_MAP(CMyDoc,CDocument)
    ON_COMMAND(ID_HELP_ABOUT,OnAbout)
    END_MESSAGE_MAP()
//////////////////////////////////////////////////
class CMyView:public CView
{
protected:
    CMyView();
    CMyDoc* GetDocument();
    DECLARE_DYNCREATE(CMyView)
public:
    virtual void OnDraw(CDC* pDC);
};
void CMyView::OnDraw(CDC* pDC)
{
    CMyDoc* pDoc=GetDocument();
    pDC->TextOutA(0,0,pDoc->GetDate());
}
IMPLEMENT_DYNCREATE(CMyView,CView)
CMyView::CMyView()
{
}
CMyDoc* CMyView::GetDocument()
{
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
    return (CMyDoc*)m_pDocument;
}
////////////////////////////////////
class CMainFrame:public CFrameWnd
{
protected:
    CMainFrame();
    DECLARE_DYNCREATE(CMainFrame)
public:
};
IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)
CMainFrame::CMainFrame()
{
}
/////////////////////////////////////////////////

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



НАЗАД                                                                         ДАЛЬШЕ

Back to Top