對話方塊

對話方塊[1](中國大陸稱對話框)是圖形化使用者介面中的特殊視窗,用來向用者顯示資訊,或在需要時獲得用者輸入回應。之所以稱為「對話方塊」是因為它們使電腦和用者之間構成了一個對話——或者是通知用者一些資訊,或者是請求用者輸入,或者兩者皆有。

模態對話方塊範例,來自gedit

不同的使用者互動使用不同的對話方塊。最簡單的對話方塊是警告,它顯示一條資訊並且僅需要已讀回應(通常單擊「確定」按鈕或「關閉」命令的對話方塊)。用來為操作提供警告和簡單確認,也可能包括程式終止或崩潰的提示,以及使用者有意或無意的關閉動作。雖然對於有模式對話方塊來說,這是個經常性的互動模式,但是由於它被認為在防止非預期的破壞性操作上不夠有效以及存在更好的替換方案[2]而遭到可用性專家的批評。顯示一般提示資訊的對話方塊,可以設計為提示氣泡等形式來避免打斷使用者操作。

無模式對話方塊

這是一種非強制回應的對話方塊,用於向使用者請求非必須資料。即可以不理會這種對話方塊或不向其提供任何資訊而繼續當前工作,所以窗口均可打開並處於活動狀態或是獲得焦點(人機互動熱點)。一類無模式對話框表現為工具欄,比如設定用於設定文字顏色。尋找/替換對話方塊可算是無模式對話方塊,也可設計為工具列。

有模式對話方塊

這種對話方塊強制要求使用者回應,否則使用者不可繼續操作,直到與該對話框完成互動。這種對話方塊設計用於程式執行必須停下來,直到從使用者獲得額外資訊,然後才可繼續操作,或可能只想確認使用者想要執行有潛在危險的操作。有模式對話框以使用者不喜歡看到方式出現,或是被習慣不去注意對話方塊提示的使用者忽略,導致無法避免危險操作,故此一般視為壞的設計方案。[2]

有模式對話方塊一般分為系統級和應用程式級。系統級對話方塊出現時,使用者在完成與對話方塊互動之前不能執行其它操作,比如關機對話方塊、Windows VistaUAC。應用程式級的則只對它的母程式有所限制,但可能在允許執行多個實際不同軟體中有不同表現:只限定其中一扇程式視窗使之無法操作或全部限定。

模式的定義

根據傑夫·拉斯金在《Humane Interface英語Humane Interface》(頁42)中對電腦科學對「模式」英語Mode (computer interface)的定義:

人機介面對於跟定的動作(gesture)是模態的(modal),如果(一)介面的當前狀態不在使用者的注意之處;(二)依賴於系統的狀態,介面對動作會從幾種不同的回應執行中選擇一種執行。

照此定義,介面是無模態的僅當使用者完全感知當前狀態。例如,狀態的改變是使用者故意造成的。常見模態例子:

對話方塊與一般窗口的區別

從作業系統實現角度,對話方塊是特殊的窗口(window)。特殊之處不在於對話方塊會包含一些控制項(如按鈕、編輯框、下拉式清單框等)。因為一般窗口也可以包含這些控制項。特殊性在於,對話方塊的這些控制項是用來與使用者互動,所以有一些約定的使用規則:

  • Tab Order:按下Tab鍵或上、下、左、右方向鍵,各個控制項依次獲得輸入焦點
  • 如果按鈕獲得輸入焦點,這時按空格鍵或確認鍵,相當於滑鼠左鍵點擊了該按鈕

對話方塊的預設窗口過程在處理有關的按鍵訊息時,會自動解析處理上述使用規則。而一般窗口的窗口過程,顯然沒有這些預設的案件訊息處理。Windows作業系統提供了一個API函式IsDialogMessage,以支援對話方塊上述使用規則的自動實現。

參考