正在加载图片...
第14单元对话框 对话框类 CNameDlg的对象dlg,通过其 DoModal()函数调用对话框。在退出对话框后, 将对话框类的数据成员 m str NameEdit的值(即用户输入的签名)复制到框架窗口类的签名 数组中去 对话框类还有一个 CPoint类 的数据成员 m point TopLeft,用来 存放对话框左上角的坐标。通常情 况下,对话框总是出现在屏幕的中 签名 央,而在本例中我们希望对话框出 现在用户点击鼠标左键的位置,因 此需要对对话框的位置加以控制。 这项工作在对话框初始化函数 OnInitDialog()中完成:首先用 CWnd类的 Get WindowRect()函 图14-3签名簿程序 数取得对话框的大小信息,然后构 造出新的对话框矩形区域,再使用 Movewindow()函数将对话框移动到指定位置。这些 操作均是通过CWnd类的成员函数实现的,因为对话框也是一种窗口,对话框类是CWnd 类的派生类 为了实现上述功能,在框架窗口类的鼠标左键消息响应函数中调用对话框对象的 DoModal()函数之前,先将鼠标按键的位置传送到对话框对象的数据成员 m point TopLeft 中。这样, OnInitDialog()函数就可以将对话框在显示之前就移到指定的位置上 根据对话框模板资源向应用程序中添加与控件有关的代码(如对话框类的相应成员变量 声明、初始化和数据交换(DDX)代码等)均可使用 ClassWizard自动生成,参看149:“为 对话框类加入成员变量”。 自学内容 145非模态对话框 与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然 可以与其它界面对象进行交互 非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板资源和设计 CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对 话框相比有以下区别 1.非模态对话框的模板资源必须具有 sible风格(在属性对话框的 More Styles页中 设置),否则对话框将不可见,而模态对话框则无需设置该项风格 2.非模态对话框对象是用new操作符动态创建的,而不象模态对话框那样以对象变量 的形式出现。对于非模态对话框,应在对话框的拥有者窗口类内声明一个指向对话框类的指第 14 单元 对话框 285 对话框类 CNameDlg 的对象 dlg,通过其 DoModal()函数调用对话框。在退出对话框后, 将对话框类的数据成员 m_strNameEdit 的值(即用户输入的签名)复制到框架窗口类的签名 数组中去。 对话框类还有一个 CPoint 类 的数据成员 m_pointTopLeft,用来 存放对话框左上角的坐标。通常情 况下,对话框总是出现在屏幕的中 央,而在本例中我们希望对话框出 现在用户点击鼠标左键的位置,因 此需要对对话框的位置加以控制。 这项工作在对话框初始化函数 OnInitDialog()中完成:首先用 CWnd 类的 GetWindowRect()函 数取得对话框的大小信息,然后构 造出新的对话框矩形区域,再使用 MoveWindow()函数将对话框移动到指定位置。这些 操作均是通过 CWnd 类的成员函数实现的,因为对话框也是一种窗口,对话框类是 CWnd 类的派生类。 为了实现上述功能,在框架窗口类的鼠标左键消息响应函数中调用对话框对象的 DoModal()函数之前,先将鼠标按键的位置传送到对话框对象的数据成员 m_pointTopLeft 中。这样,OnInitDialog()函数就可以将对话框在显示之前就移到指定的位置上。 根据对话框模板资源向应用程序中添加与控件有关的代码(如对话框类的相应成员变量 声明、初始化和数据交换(DDX)代码等)均可使用 ClassWizard 自动生成,参看 14.9:“为 对话框类加入成员变量”。 自学内容 14.5 非模态对话框 与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然 可以与其它界面对象进行交互。 非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板资源和设计 CDialog 类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对 话框相比有以下区别: 1.非模态对话框的模板资源必须具有 Visible 风格(在属性对话框的 More Styles 页中 设置),否则对话框将不可见,而模态对话框则无需设置该项风格; 2.非模态对话框对象是用 new 操作符动态创建的,而不象模态对话框那样以对象变量 的形式出现。对于非模态对话框,应在对话框的拥有者窗口类内声明一个指向对话框类的指 图 14-3 签名簿程序
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有