科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C++.NET编程讲座之五

Visual C++.NET编程讲座之五

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文讨论了对话框界面设计的一般过程和技巧,然后创建对话框类并用模式和无模式方式来显示

作者:Adding 来源:yesky 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
2. 无模式对话框的显示

  无模式对话框与模式对话框的区别主要体现在:

  ① 模式对话框是由系统自动分配内存空间,在对话框退出时,对话框对象自动删除。而无模式对话框则需要用户来指定内存,退出时还需自己来删除对话框对象。

  ② 在退出时,无模式对话框与模式对话框所使用的终止函数是不一样的。模式对话框通过调用CDialog:: EndDialog来终止,而无模式对话框则是调用CWnd::DestroyWindow来终止的。

  由于用户单击"确定"或"取消"按钮时,无论是模式还是无模式,对话框都将终止。因此对于无模式对话框来说,我们须在CDiaolog::OnOK()和CDiaolog::OnCancel()的函数重载中调用DestroyWindow()来退出对话框窗口,并且由于当用户单击"确定"时,对话框的输入数据有效,因此我们还需要在对话框退出之前调用CWnd::UpdateData来使输入有效(后面还要讨论)。下面就来操作。

  (1) 将解决方案资源管理器窗口切换到"类视图",单击CSetDlg,然后在其属性窗口中单击"重写"按钮,这样属性窗口中就会列出了所有可重载的函数。

  (2) 打开OnOK和OnCancel函数,添加它们的重载。图9是在其属性窗口中添加OnOK重载时的情形。


图9 添加OnOK函数的重载

  (3) 在OnOK和OnCancel函数中添加代码,如图10所示。


图10 在函数添加的代码

  (4) 在CViewerView类中添加一个成员指针变量m_pSetDlg,变量类型为CSetDlg*。

  (5) 在CViewerView类的析构函数中添加对该对话框指针的删除代码,如图11所示。


图11 在析构函数中添加删除代码

  (6) 修改CViewerView::OnFormatSet代码,结果如图12所示。


图12 OnFormatSet修改后的代码

  (7) 运行程序,结果和模式对话框一样。问题是,如何获取无模式对话框中用户输入的数据呢?我们在下一讲中将加以讨论。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章