关于数据同步,窗口同步之类

最近经常遇到关于数据同步或者说窗口同步之类的问题。比如在对话框A中,点击按钮之后弹出对话框B。在对话框B做了某个操作之后,对话框A想立即知道或者知道之后做出某些反应。对于类似这样的问题,一般第一反应应该就是想到用发消息的方式来处理,但是有时候用发消息这种方式会很麻烦,特别是这两个对话框不在一个项目中,或者他们都只是很底层的一个对话框的时候。这个时候可以用C++中类的继承,多态来解决这个问题。大致的思路如下:

1.定义一个抽象类作为基类(其实不是抽象类也行);

1 class Base
2 {
3     virtual void event()=0;
4 }

这里的事件event就是对话框A要做出的反应

2.定义对话框A

class A:public Base
{
    virtual void event(); 
}

这里让A继承Base,并自己写好关于event的实现,就是具体做出什么反应。

3.定义对话框B

class B
{
    void event1(Base *p);
}

这里将基类Base的指针作为形参,在实际调用的时候将A的指针传进来即可。这个传参的过程可以放到构造函数中,也可以直接放到具体事件中。

void B::event1(Base* p)
{
    p->event();
}

这里就类似于反馈给A了,让A做出反应。

原文地址:https://www.cnblogs.com/gig886/p/5028563.html