Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6100042
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: Windows平台

2013-08-12 23:47:10

    创建一个MFC单文档应用程序后,我们可以点击帮助菜单下的关于,弹出关于对话框,之后如果你想再点击其他菜单选项是不可能的,必须先退出该关于对话框:
    原因是这是模态对话框(模态对话框(Modal Dialogue Box,又叫做),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭),因此我们可以修改为非模态对话框(非模态(Modeless)对话框,又叫做,当用户打开非时,依然可以操作其他窗口。例如,Windows提供的记事本程序中的【查找】对话框。【查找】对话框不会垄断用户的输入,打开【查找】对话框后,仍可与其他用户界面对象进行交互。用户可以一边查找,一边修改文章,这样就大大方便了使用);

    只需要修改创建“关于对话框”的相关代码就可以了...

点击(此处)折叠或打开

  1. // App command to run the dialog
  2. void CDoModuleApp::OnAppAbout()
  3. {
  4.     CAboutDlg aboutDlg;

  5.     ///< 无法显示的非模态对话框 --- 这样窗口无法显示,因为对象是局部的,函数执行完了,也就析构了.
  6.     aboutDlg.Create(IDD_ABOUTBOX);
  7.     aboutDlg.ShowWindow(SW_SHOWNORMAL);

  8.     ///< 正常的非模态对话框 --- 问题:导致内存泄漏,最好搁到头文件申明,析构的时候delete
  9.     CAboutDlg * aboutDlgHeap;
  10.     aboutDlgHeap = new CAboutDlg();
  11.     aboutDlgHeap->Create(IDD_ABOUTBOX);
  12.     aboutDlgHeap->ShowWindow(SW_SHOWNORMAL);
  13.     
  14.     ///< 模态对话框                --- 停止当前窗口,直线该对话框,直到关闭该对话框才恢复父窗口
  15.     //aboutDlg.DoModal();
  16. }
    效果:
    

阅读(831) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~