美文网首页
MFC文档类视图接收字符串

MFC文档类视图接收字符串

作者: 玉宾 | 来源:发表于2020-12-16 21:59 被阅读0次

    他在二楼,你在一楼,如果他没有看你的话,那为什么你们会对视呢?

    ----  网易云热评

    一、文档类处理数据

    1、通过消息处理传递数据,并用UpdateAllViews刷新和文档对象关联的所有视图类对象

    classCMyDoc :public CDocument {    DECLARE_MESSAGE_MAP()public:    CString str;afx_msg voidxinjian();};BEGIN_MESSAGE_MAP(CMyDoc, CDocument)    ON_COMMAND(ID_XJ,xinjian)END_MESSAGE_MAP()void CMyDoc::xinjian() {//模拟接收数据this->str = "hello word";//调用视图类onupdatethis->UpdateAllViews(NULL);}

    2、由于调用了updateallviews函数,所以需要在视图类窗口重写该函数

    声明函数

    virtualvoidOnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);实现函数void CMyView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) {    CMyDoc* pDoc =(CMyDoc*) this->m_pDocument;//效果一样//CMyDoc* pDoc =(CMyDoc*) this->GetDocument();this->SetWindowText(pDoc->str);}

    3、点击新建,运行结果

    对象关系图

       theApp

          |->m_pMainWnd ( pFrame )

                    |->m_pViewActive ( pView )

                               |->m_pDocument ( 文档类对象地址 )

                                        |->m_viewList

    切割视图窗口

    1、创建一个对象CSplitterWnd

    CSplitterWnd split;

    2、在框架窗口声明OnCreateClient函数

    virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);

    3、重写该函数

    BOOLCMyFrameWnd::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext){    split.CreateStatic(this, 2, 1);    split.CreateView(0,0,RUNTIME_CLASS(CMyView),CSize(100,100),pContext);    split.CreateView(1, 0, RUNTIME_CLASS(CMyView), CSize(100, 100), pContext);returnTRUE;}

    4、运行效果

    只刷新一个窗口

    1、获取相应视图的对象

    void CMyDoc::xinjian() {//模拟接收数据this->str = "hello word";//获取链表迭代器m_viewList    POSITION pos = GetFirstViewPosition();//获取第一个视图窗口的对象    CView* pView = GetNextView(pos);//再掉一次获取第二个视图的对象    pView = GetNextView(pos);//填写那个对象不刷新那个对象this->UpdateAllViews(pView);//调用视图类onupdate,全部刷新//this->UpdateAllViews(NULL);}

    2、运行结果

    欢迎关注公众号:顺便编点程

    相关文章

      网友评论

          本文标题:MFC文档类视图接收字符串

          本文链接:https://www.haomeiwen.com/subject/vpnogktx.html