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

目录
相关文章
|
8月前
|
Windows
VBA的直接或间接调用的语法格式
VBA|过程或方法内部的直接或间接调用与相对怪异的语法格式
|
7月前
|
开发框架 前端开发 JavaScript
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
|
8月前
|
数据安全/隐私保护 C++
C++语言深入理解类的封装与数据隐藏
深入理解类的封装与数据隐藏
|
9月前
MFC文档视图
MFC文档视图
41 0
|
Java 编译器
深入探索: 对象构造的隐藏功能与技巧
深入探索: 对象构造的隐藏功能与技巧
112 0
MFC文档类视图接收字符串
MFC文档类视图接收字符串
89 0
MFC文档类视图接收字符串
|
前端开发 测试技术 Go
嵌套结构体导出excel的实现方式
嵌套结构体导出excel的实现方式
226 0
|
C#
“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
  这两天在做一个需要将wps文档转换成word文档的程序,在调用wps的com组件时项目编译是没有问题的,但当运行的时候却弹出了下面的错误提示: 从网上百度一番后,找到了正确的解决方法。    先从Com组件中添加引用:   选中引入的Com组件库,右键-> 属性:   将“嵌入互操作类型”改为 False 选项:   重新编译,程序正常运行。
1159 0
8.1 类的一般形式
class ren(object):     '''this class is about ren class。类的说明,使用三个单引号'''     name='菇凉'     sex='Female'     def hello(self):         print('hello world') a=ren() print(type(a)) print(a.
587 0
|
XML C# 数据格式
C#封装程序集属性方法注释说明
一.使用封装程序集好处: 在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方式的异常。
1143 0