﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:xg="http://ucdchina.com/schemas/rss">	
 		<channel>
 			<title>弹出框 - UCD大社区</title>
 			<link>http://ucdchina.com/rss/topic_posts?id=213</link>
 			<description>弹出框 - UCD大社区</description>
 			<webMaster>qingping.hu@gmail.com</webMaster>
			<pubDate>2026-06-04 03:06:14</pubDate>			<item>
				<title>令人费解的形形色色的确认对话框</title>
				<link>http://ucdchina.com/snap/2422</link>
				<description>&lt;div&gt;在各式各样的对话框中，最常遇到的是那些要求用户对软件将要执行的某个操作进行确认的对话框。例如，当Google浏览器崩溃时，它会弹出如下的对话框要求用户确认：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&lt;img style=&quot;width:315px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/d13ba19d86d6c6838c94e3f84928e7f7.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
 
&lt;div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;在这个例子中，将要确认的操作比较简单明了，其描述语句也很简单，因此用户能够很容易地知道是选择&amp;ldquo;确定&amp;rdquo;还是&amp;ldquo;取消&amp;rdquo;。然而在很多时候，点击这两个按钮的含义需要在仔细阅读对话框中的描述后才能知道，这导致用户必须仔细阅读描述信息。例如，在使用Hotmail发送邮件时，如果首先选择了一个要作为附件发送的文件，当在文件上载还没有完成时就点击发送邮件按钮时，Hotmail会弹出如下的确认对话框：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:527px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/98653558b91ab76346e1ac9e135ef46c.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
 &lt;br /&gt;这里的&amp;ldquo;OK&amp;rdquo;和&amp;ldquo;Cancel&amp;rdquo;按钮的含义就没有那么清楚了。实际上，正如描述信息中所述：点击&amp;ldquo;Cancel&amp;rdquo; 实际上是表示等待文件上载完成后在发送，而点击&amp;ldquo;OK&amp;rdquo;则表示立刻发送邮件，但是邮件中不会有附件。所以在这里，表面上是肯定含义的&amp;ldquo;OK&amp;rdquo;所引发的动作却不一定是肯定的。从发送邮件的角度来看，这个操作是肯定的，但从发送附件的角度来看则是否定的。&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;从这个例子中可以看出困难产生的原因了，表面上含义是肯定的那些按钮文字，例如&amp;ldquo;是&amp;rdquo;，&amp;ldquo;确定&amp;rdquo;所表示的实际含义却不一定是肯定的，它们只是表示对于对话框中所提的问题的答案是肯定还是否定。例如，假如问题是：&amp;ldquo;你要去上班，是吗&amp;rdquo;，如果答案是&amp;ldquo;是&amp;rdquo;，则表示要去上班。但如果问题是&amp;ldquo;你不去上班，是吗&amp;rdquo;，那么当回答是&amp;ldquo;是&amp;rdquo;时，则表示不去上班。（在英语中恰好相反）&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;所以如果所有的确认对话框的按钮文字只是表示对于问题的答案是肯定还是否定时，则用户就需要仔细阅读对话框中的问题后才能决定按哪个按钮。&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;下面就是一些有这种问题的例子：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:417px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/6c4d2fb29c0648e4e6f1bed7527aef2f.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:266px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/abdca023e3bcaa13d64f4b0e2235dd52.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
 
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:535px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/ab7ff9f2614885cf25297f1d91984435.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:505px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/bdfddaee59d578ccca2956069accb359.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;实际上，对于这类问题的解决方案也很简单，那就是在按钮上多写几个字，简要地表明&amp;ldquo;是&amp;ldquo;，&amp;rdquo;确定&amp;ldquo; ，&amp;rdquo;否&amp;ldquo;，等字眼的真正含义。下面就是一些好的设计的例子：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:444px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/29b56a7c6465d42d5785f4cf4441b37e.bmp&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:451px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/a5f4d5cf7902abedced2f06af1e69fcc.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp; 
&lt;div style=&quot;padding-right:0px;padding-left:0px;padding-bottom:1em;padding-top:1em;text-align:left&quot;&gt;&lt;img style=&quot;width:419px;height:auto&quot; src=&quot;http://img.ucdchina.com/upload/snap/2009-03/721f54d9b0314b4aa03c7de30d9a3b56.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;更进一步思考，为什么会产生哪些令人费解的确认对话框呢，我认为有两个可能的原因：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;1. 用于显示这类对话框的最底层Windows API函数是 MessageBox, 其原型如下&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MessageBox(&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __in_opt HWND hWnd,&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __in_opt LPCSTR lpText,&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __in_opt LPCSTR lpCaption,&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __in UINT uType);&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;其中 lpText 是显示在窗口体中的描述性文字， lpCaption 是窗口的标题文字，uType则用来指定会有哪些按钮显示：&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_ABORTRETRYIGNORE&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_CANCELTRYCONTINUE&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_HELP&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_OK&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_OKCANCEL&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_RETRYCANCEL&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_YESNO&lt;/span&gt;&lt;/div&gt;
 
&lt;div style=&quot;margin:0cm 0cm 0pt 36pt;text-indent:15pt&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_YESNOCANCEL&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;例如&lt;span style=&quot;font-size:10.5pt&quot;&gt;MB_OK&lt;/span&gt;表示会有一个显示&amp;ldquo;OK&amp;rdquo;文字的按钮。显然，从这个API的调用中，程序员没有办法设置按钮的字，只能屈就于那些固定的几种词语。类似地，其他语言的用来显示对话框的API由于在最底层都是调用这个Win32 API，所以也不可避免地有这个问题。&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;2. 缺乏对于产品可用性的关注。&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;产品的设计是从里向外进行，而不是从外向里进行。换句话说，不是事先设计好界面应当显示何种信息及如何显示，然后考虑如何按照这个用户所能感觉到的设计去做内部实现时的设计，而是在完成内部的实现后，界面长成什么样子也不再关心了，要求用户去适应界面，不论有多难用。&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;相关话题：&lt;a href=&quot;http://ucdchina.com/topic/213&quot; target=&quot;_blank&quot;&gt;弹出框&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://ucdchina.com/topic/245&quot; target=&quot;_blank&quot;&gt;确认页的设计&lt;/a&gt;&amp;nbsp;源地址：&lt;a href=&quot;http://blog.sina.com.cn/s/blog_4caba12a0100cg93.html&quot; target=&quot;_blank&quot;&gt;http://blog.sina.com.cn/s/blog_4caba12a0100cg93.html&lt;/a&gt;&lt;/p&gt;</description>
				<author>novanewlife</author>
				<pubDate>2009-03-05 08:19:38</pubDate>
			</item></channel></rss>