我有一个自己定义的数据类型,名字叫做CMyData.
我的程序是SDI的,没有doc/view支持的.我在主框架窗口的类中添加了一个成员变量如下:
class CMainFrame : public CFrameWnd{
...
CMyData m_data;
CConfigDlg m_configDlg;
...
}
上面的CMainFrame中,有一个无模式对话框的成员变量m_configDlg;
而且m_data 和 m_configDlg是有一定关联的,比如m_configDlg里面的一些设置操作,直接能修改m_data的值,同时,我的CMyData里面有一些数据处理的函数,比如:
CMyData::DataProcessing(){
...
}
CMyData数据更新以后,又需要更新m_configDlg的显示内容。问题是:我如何让m_data来通知CConfigDlg来更新界面,同时CConfigDlg如何来更新m_data呢?似乎后者比较容易实现,因为CConfigDlg里面可以发送消息给CMainFrame,比如传递一个数据指针,然后CMainFrame的消息处理函数来更新 m_data,但是 m_data 的变化该怎么反应到 CConfigDlg上面呢?谢谢

解决方案 »

  1.   

    当你m_data有变化的时候调用
    m_configDlg.UpdateData(FALSE);
      

  2.   

    你好,谢谢你这么快的回复我的帖子。
    你可能没有太看懂我的帖子,我里面讲述的是: m_data是一个CMainFrame的成员,m_configDlg的UpdateDate函数,只能用自己类的成员变量去更新自己的界面。好像是没有办法调用的。下面是我自己的疑问:m_data是CMainFrame的成员变量,如果m_data自己里面做了一些数据处理的工作,他该怎么调用CMainFrame的一些函数呢?最近一直被这些数据和界面的东西搞得很晕乎
      

  3.   

    谢谢Mackz大虾的回复,我知道,这样回复一个帖子,必然在占据了一些宝贵的时间。我的问题把它重新审视以后,发现就是这样的情况:
    m_data 和 m_configDlg 都是CMainFrame的成员,需要两者交互数据。m_configDlg就是所谓的界面,所以界面上面有一些操作和改变,需要更新 m_datam_data是一个数据,当m_data自己发生改变时,又需要通知 m_configDlg的界面发生改变。第一个问题,我个人觉得,只要从m_configDlg里面发送一个消息  sendMessage给 CMainFrame就可以了,然后CMainframe就调用 m_data的成员函数什么的来更新它。至于 m_configDlg如何获取 CMainframe的窗口指针,我想有一个AfxGetMainwindow?? 反正有一个类似的函数,可以得到主窗口的指针的。第二个问题我就有点搞不懂了,该怎么办呢?m_data如何通知 m_cofigdlg, m_data是一个普通的C++的类,它该怎么办呢?谢谢