`
haojiejie
  • 浏览: 15111 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

模态对话框

阅读更多

对话框在Windows应用程序中使用非常普遍,许多应用程序的设定,与用户交互需 
要通过对话框来进行,因此对话框是Windows应用程序中最重要的界面元素之一, 
是与用户交互的重要手段。对话框是一个特殊的窗口,任何对窗口进行的操作( 
如移动、最大化、最小化等)也可以在对话框实施。 

对话框大致可以分为以下两种。 

(1)模态对话框:模态对话框弹出后,独占了系统资源,用户只有在关闭该对话 
框后才可以继续执行,不能够在关闭对话框之前执行应用程序其他部分的代码。 
模态对话框一般要求用户做出某种选择。 

(2)非模态对话框:非模态对话框弹出后,程序可以在不关闭该对话框的情况下 
继续执行,在转入到应用程序其他部分的代码时可以不需要用户做出响应。非模 
态对话框一般用来显示信息,或者实时地进行一些设置。 

模态窗口在传统编程语言中很常见,简单的说就是,如果是模态的,就是打开一 
个子窗口,如果这个子窗口不关闭,就不能操作它的父窗口,原来程序暂停执行 
,直到这个模态窗口关闭后才回到原来程序继续。 

非模态的就是直接显示出来,然后原来的程序继续执行下面的语句,而且其他窗 
口也呈可用状态。 

模态对话框独占了用户的输入,当一个模态对话框打开时,用户只能与该对话框 
进行交互,而其他用户界面对象收不到输入信息。应用程序用到的大部分对话框 
都是模态对话框。 
通常浏览器中windwo.open或超链接弹出的新窗口就是非模式窗口,而模式窗口是 
类似alert那种必须关闭才能响应其他事件的窗口。 

明白了对话框的模态和非模态,来看下边 

在B/s结构应用程序的开发中,有时我们会希望使用者按下按钮后开启一个保持在 
原窗口前方的子窗口, 
在IE中,我们可以使用 
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于 
是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。 


这里是window.showModalDialog弹出窗口的一个实例函数: 



<script type="text/javascript">   
function openWin(src, width, height, showScroll){   
window.showModalDialog  
(src,"","location:No;status:No;help:No;dialogWidth:"+width+";dialogHeig  
ht:"+height+";scroll:"+showScroll+";");   
}   
</script>  

例:<span style="CURSOR: pointer" onclick="openWin  
(’http://www.deepteach.com’, ’500px’, ’400px’, ’no’)">点击</span> 




需要注意的是FireFox浏览器中不支持showmodaldialog() ,这是因为在最初  
MozillaSuite 中(Firefox 是从这个套件衍生),是支持 showmodaldialog()  
的,不过后来发现 showmodaldialog() 存在安全隐患,不久后就取消了对  
showmodaldialog() 的支持,这个事情还发生在 bug 194404 提交前。在想出更 
好的解决方案前,相信 Firefox 是不会提供对 showmodaldialog() 的支持的。 

打开弹窗只能使用window.open实现这样的功能,window.open的语法如下 :  
oNewWindow = window.open( [sURL] [, sName] [, sFeatures] [, bReplace])  

只是,在Firefox下,window.open的参数中,sFeature多了一些功能设定,要让 
FireFox下开启的窗口跟IE的showModalDialog一样的话, 
只要在sFeatures中加个modal=yes就可以了,也许可能是出于安全考虑modal=yes  
打开的并不是模式窗口 
范例如下:  


window.open  
(’openwin.html’,'newWin’, 'modal=yes, width=200,height=200,resizable=no, scrollbars=no’ );   



由于在firefox没有showModalDialog方法。则用如下判断来兼容两种浏览器: 


<input type="button" value="打开对话框" onclick="showDialog('#')"/>  
  <SCRIPT   LANGUAGE="JavaScript">  
  <!--  
  function   showDialog(url)  
  {  
   if(   document.all   ) //IE  
   {  
   feature="dialogWidth:300px;dialogHeight:200px;status:no;help:no";  
   window.showModalDialog(url,null,feature);  
   }  
   else  
   {  
     //modelessDialog可以将modal换成dialog=yes  
   feature ="width=300,height=200,menubar=no,toolbar=no,location=no,";  
   feature+="scrollbars=no,status=no,modal=yes";    
   window.open(url,null,feature);  
   }  
  }  
  //-->  
</SCRIPT> 

本文转自:http://blog.csdn.net/royal_coffee/archive/2008/04/21/2310528.aspx
分享到:
评论

相关推荐

    详解VC++模态对话框和非模态对话框

    在VC++中,MFC(Microsoft Foundation Classes)框架提供了两种主要的对话框类型:模态对话框和非模态对话框。这两种对话框在程序执行流程和用户交互方面有着显著的区别。 模态对话框(Modal Dialog Box)是通过...

    vc的模态对话框和非模态对话框

    ### VC的模态对话框和非模态对话框详解 #### 概述 在Visual C++(VC)中,模态对话框与非模态对话框是两种常见的对话框类型,它们各自具备独特的特性和用途。理解这两种对话框的区别对于开发用户友好的应用程序至...

    模态对话框与非模态对话框程序Java示例

    对话框分为两种主要类型:模态对话框(Modal Dialog)和非模态对话框(Non-modal Dialog)。下面将详细阐述这两种对话框的概念、特点以及如何在Java中创建和使用它们。 1. 模态对话框: 模态对话框是阻止用户与父...

    MFC模态 非模态对话框 ARX2008+VS2005

    结合Visual Studio 2005(VS2005)的Microsoft Foundation Classes (MFC),我们可以构建强大的用户界面,其中包括模态和非模态对话框。下面将详细解释这两个概念以及如何在ARX2008+VS2005环境下实现它们。 1. **...

    VC中模态对话框和非模态对话框的编程

    ### VC中模态对话框和非模态对话框的编程 #### 一、概述 对话框(Dialog)作为Windows应用程序中频繁使用的元素之一,主要用于接收用户的输入信息。在MFC框架下,对话框的功能被封装在`CDialog`类中,这是一个从`...

    qml自定义模态对话框

    在QML(Qt Quick)中,自定义模态对话框是一种常见的需求,它允许开发者创建具有独特设计和功能的交互式界面元素。不同于标准的`Popup`组件,自定义模态对话框通常需要更高的定制性,以满足特定的用户体验或项目需求...

    模态对话框和非模态对话框创建和使用VS2010/MFC

    在Microsoft Visual Studio 2010 (VS2010) 中,MFC(Microsoft Foundation Classes)库提供了创建和管理用户界面元素的功能,其中包括模态对话框和非模态对话框。这两种对话框在Windows应用程序开发中扮演着重要的...

    MFC模态对话框和非模态对话框

    在Windows应用程序开发中,Microsoft Foundation Class (MFC)库提供了一种高效且便捷的方式来创建用户界面,其中包括模态对话框和非模态对话框。这两种对话框在不同的场景下各有其用途,理解它们的工作原理和使用...

    一个简单模态对话框实例

    模态对话框是用户界面设计中的一个重要元素,它在应用程序中起到临时中断主窗口操作,迫使用户必须先处理对话框中的事务,才能继续进行其他操作的功能。这种对话框的特性使得用户不能忽视其存在,因此被称为“模态”...

    子模态对话框关闭后刷新父模态对话框

    本话题关注的是如何在关闭子模态对话框后刷新其父模态对话框,这是一个典型的前端开发问题,主要涉及到JavaScript和可能的框架如jQuery、React、Vue或Angular等。 首先,我们需要理解模态对话框的工作原理。模态...

    Visual C++模态对话框消息处理机制的分析

    在模态对话框处于活动状态期间,应用程序只能处理与该模态对话框相关的消息,其他的消息将被阻塞,直到模态对话框关闭。 消息队列是Windows程序中一个非常重要的概念,它用于存放各种窗口的消息。每个应用程序都有...

    mfc中模态、非模态对话框与主对话框之间的数据交换

    点击运行弹出一个对话框,点击DIALOG1按钮弹出一个模态对话框,在该对话框的编辑框输入文本点击确定该对话框消失且输入的文本被显示到主对话框MainDialog中,点击DAILOG2按钮弹出一个非模态对话框,操作现象和模态...

    vc非模态对话框例子

    非模态对话框与模态对话框不同,在非模态对话框活动的同时,用户还可以在应用程序的其他地方工作,而模态对话框在其关闭之前,用户不能在同一个应用程序的其他地方工作。本例将从主框架窗口创建一个简单的非模态...

    MFC多线程创建非模态对话框(防止一闪而逝)

    在本示例中,我们将讨论如何在MFC环境中创建一个非模态对话框,并通过多线程防止其“一闪而逝”的现象。 首先,我们要理解“一闪而逝”的问题。通常,当在主对话框的单击事件中直接创建并显示一个新的非模态对话框...

    android 模态与非模态对话框实现

    模态对话框(Modal Dialog)是一种阻塞用户界面直至用户进行相应操作的对话框。在Android中,常见的模态对话框有AlertDialog、ProgressDialog等。它们会阻止用户与应用程序的其他部分进行交互,直到用户关闭对话框。...

    VS2010模态非模态对话框.rar

    对话框可以分为两种类型:模态对话框(Modal Dialog)和非模态对话框(Modeless Dialog)。本教程将详细介绍如何在MFC(Microsoft Foundation Classes)环境中创建这两种对话框,以及如何在它们之间传递数据。 首先...

    使用ObjectARX开发CAD制作模态对话框

    本话题主要关注如何利用ObjectARX进行CAD二次开发,特别是创建模态对话框。模态对话框在CAD应用中常见于设置参数、获取用户输入等场景,其特点是用户必须先关闭该对话框才能继续与应用程序的其他部分交互。 首先,...

    Qt主界面获取模态对话框数据的方法

    在Qt编程中,主界面与对话框的交互是常见的应用场景,无论是模态还是非模态对话框,它们都用于向用户展示特定的信息或收集用户的输入数据。本篇将详细讲解如何在Qt主界面中获取模态和非模态对话框的数据。 首先,让...

    创建非模态对话框

    ### 创建非模态对话框 在Windows编程中,对话框是一种常见的用户界面元素,用于向用户提供信息或收集用户的输入。对话框通常分为两种类型:模态对话框和非模态对话框。模态对话框会阻止用户与应用程序的其他部分...

    IOS 弹出模拟模态对话框

    在iOS开发中,模态对话框(Modal Dialog)是一种常见的用户交互方式,它可以在当前界面之上弹出一个半透明或不透明的视图,用于显示临时信息、进行关键操作或者像描述中提到的那样,创建登录界面。Xcode 6是苹果提供...

Global site tag (gtag.js) - Google Analytics