MFC文档类视图接收字符串

简介: MFC文档类视图接收字符串

一、文档类处理数据


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";
//调用视图类onupdate
this->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、点击新建,运行结果


0a2653c851af460fa595bd959398a8f1.png


对象关系图


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、运行效果


0eacb84100b54626af849e6b562bf92a.png


只刷新一个窗口


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、运行结果

4cebaac233b3433da32a72337a77fc60.png

目录
相关文章
|
3月前
MFC文档视图
MFC文档视图
13 0
|
5月前
|
C++ 索引
C++ Qt开发:StringListModel字符串列表映射组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`QStringListModel`字符串映射组件的常用方法及灵活运用。 `QStringListModel` 是 Qt 中用于处理字符串列表数据的模型类之一,它是 `QAbstractListModel` 的子类,用于在 Qt 的视图类(如 `QListView`、`QComboBox` 等)中显示字符串列表。该组件是用于在`Qt`中快速显示字符串列表的便捷模型类。该组件通常会配合`ListView`一起使
37 0
C++ Qt开发:StringListModel字符串列表映射组件
MFC文档类视图接收字符串
MFC文档类视图接收字符串
53 0
MFC文档类视图接收字符串
|
C++ 索引
C/C++ Qt StringListModel 字符串列表映射组件
StringListModel 字符串列表映射组件,该组件用于处理字符串与列表框组件中数据的转换,通常该组件会配合ListView组件一起使用,例如将ListView组件与Model模型绑定,当ListView组件内有数据更新时,我们就可以利用映射将数据模型中的数值以字符串格式提取出来,同理也可实现将字符串赋值到指定的ListView组件内。
186 0
C/C++ Qt StringListModel 字符串列表映射组件
|
C#
“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
  这两天在做一个需要将wps文档转换成word文档的程序,在调用wps的com组件时项目编译是没有问题的,但当运行的时候却弹出了下面的错误提示: 从网上百度一番后,找到了正确的解决方法。    先从Com组件中添加引用:   选中引入的Com组件库,右键-> 属性:   将“嵌入互操作类型”改为 False 选项:   重新编译,程序正常运行。
1085 0
|
C# C++
WPF附加属性的Set函数不调用的问题
原文:WPF附加属性的Set函数不调用的问题 今天写程序的时候用到了附加属性,我是用VS内置的propa的代码段来实现的,代码如下:     class Attach    {        public static bool GetIsEnabl...
828 0