现在的位置: 首页 > 综合 > 正文

4.3–对话框如何访问活动文档(或视图)对象?

2013年08月11日 ⁄ 综合 ⁄ 共 1328字 ⁄ 字号 评论关闭

      对话框没有和MFC的文档/视图结构直接连接。因此,对话框不能直接访问活动的文档对象。

      虽然显示对话的代码可以在文档对象和对话框的成员变量之间来回传送需要的数据,但手工编写这些代码有时是很繁琐的,尤其是当对话框需要读取和更新文档对象的许多域时。因此,允许对话框直接访问该对话框所属的文档对象是非常有必要的,下面的步骤说明了这种方法:

 

第一步:在对话框类里添加一个CDrawDoc类型的protected类型的成员变量m_pDoc

protected:
CDrawDoc* m_pDoc;

 

第二步:修改对话框的构造函数,用参数接收文档对象的指针,并存放在成员变量m_pDoc中

CDemoDlg::CDemoDlg(CDrawDoc* pDoc , CWnd* pParent /*=NULL*/) : CDialog(CDemoDlg::IDD, pParent)
{

      ASSERT_VALID(pDoc);
      m_pDoc=pDoc;

}

 

第三步:修改对话的DoDataExchange()函数,在文档对象和对话框控件之间直接交换数据,注意:对于对话框里的控件,不需要再定义CString、int等类型的成员变量,因为将从文档对象的数据成员中直接取出这些值

 

第四步:在生成对话框的代码中,将文档对象的地址传到要关联的对话框中,注意:生成代码不需要再在 文档对象数据成员 和 对话框的成员变量 间来回传送。

 

如果从视图里调用同样的对话框,则可以使用下面这段类似的程序:

 

抱歉!评论已关闭.