對話方塊 (對話方塊)

對話方塊是應用程式建立以擷取使用者輸入的暫存視窗。 應用程式通常會使用對話方塊來提示使用者輸入功能表項目的其他資訊。 對話方塊通常包含一或多個控制項 (子視窗) 使用者輸入文字、選擇選項或指示動作。

Windows 也提供預先定義的對話方塊,可支援一般功能表項目,例如 [開啟 ] 和 [ 列印]。 使用這些功能表項目的應用程式應該使用一般對話方塊來提示此使用者輸入,而不論應用程式類型為何。

本節內容

名稱 描述
關於對話方塊 討論在應用程式的使用者介面中使用對話方塊。
對話方塊程式設計考量 此概觀討論有關對話方塊的一些程式設計考慮。
使用對話方塊 您可以使用對話方塊來顯示資訊,並提示使用者輸入。
對話方塊參考 API 參考
通用對話方塊程式庫 討論在應用程式的使用者介面中使用通用對話方塊。

對話方塊函式

名稱 描述
CreateDialog 從對話方塊範本資源建立無強制回應對話方塊。
CreateDialogIndirect 從記憶體中的對話方塊範本建立無強制回應對話方塊。
CreateDialogIndirectParam 從記憶體中的對話方塊範本建立無強制回應對話方塊。 在顯示對話方塊之前,函式會將應用程式定義的值傳遞至對話方塊程式,作為WM_INITDIALOG訊息的lParam參數。 應用程式可以使用此值來初始化對話方塊控制項。
CreateDialogParam 從對話方塊範本資源建立無強制回應對話方塊。 在顯示對話方塊之前,函式會將應用程式定義的值傳遞至對話方塊程式,作為WM_INITDIALOG訊息的lParam參數。 應用程式可以使用此值來初始化對話方塊控制項。
DefDlgProc 呼叫預設對話方塊視窗程式,為具有私用視窗類別的對話方塊未處理的任何視窗訊息提供預設處理。
DialogBox 從對話方塊範本資源建立強制回應對話方塊。 在指定的回呼函式呼叫EndDialog函式結束強制回應對話方塊之前,DialogBox不會傳回控制項。
DialogBoxIndirect 從記憶體中的對話方塊範本建立強制回應對話方塊。 在指定的回呼函式呼叫EndDialog函式終止強制回應對話方塊之前,DialogBoxIndirect不會傳回控制項。
DialogBoxIndirectParam 從記憶體中的對話方塊範本建立強制回應對話方塊。 在顯示對話方塊之前,函式會將應用程式定義的值傳遞至對話方塊程式,作為WM_INITDIALOG訊息的lParam參數。 應用程式可以使用此值來初始化對話方塊控制項。
DialogBoxParam 從對話方塊範本資源建立強制回應對話方塊。 在顯示對話方塊之前,函式會將應用程式定義的值傳遞至對話方塊程式,作為WM_INITDIALOG訊息的lParam參數。 應用程式可以使用此值來初始化對話方塊控制項。
DialogProc 應用程式定義的回呼函式,與 CreateDialogDialogBox 函式系列搭配使用。 它會處理傳送至強制回應或無強制回應對話方塊的訊息。 DLGPROC類型會定義這個回呼函式的指標。 DialogProc 是應用程式定義函數名稱的預留位置。
EndDialog 終結強制回應對話方塊,導致系統結束對話方塊的任何處理。
GetDialogBaseUnits 擷取系統的對話方塊基底單位,這是系統字型中字元的平均寬度和高度。 對於使用系統字型的對話方塊,您可以使用這些值,在對話方塊範本和圖元中指定的對話方塊範本單位之間轉換。 對於不使用系統字型的對話方塊,從對話方塊範本單位轉換為圖元的轉換取決於對話方塊所使用的字型。
GetDlgCtrlID 擷取指定控制項的識別碼。
GetDlgItem 擷取指定對話方塊中控制項的控制碼。
GetDlgItemInt 將對話方塊中指定控制項的文字轉譯成整數值。
GetDlgItemText 擷取對話方塊中控制項相關聯的標題或文字。
GetNextDlgGroupItem 擷取控制項群組中第一個控制項的控制碼,該控制項位於 (之前,或遵循) 對話方塊中指定的控制項。
GetNextDlgTabItem 擷取第一個控制項的控制碼,該控制項的 WS_TABSTOP樣式在 指定的控制項前面 (或) 後面。
IsDialogMessage 判斷訊息是否適用于指定的對話方塊,如果是,則處理訊息。
MapDialogRect 將指定的對話方塊單位轉換成螢幕單位, (圖元) 。 函式會將指定 RECT 結構中的座標取代為已轉換的座標,讓結構可用來建立對話方塊或將控制項置於對話方塊中。
MessageBox 顯示包含系統圖示、一組按鈕和簡短應用程式特定訊息的強制回應對話方塊,例如狀態或錯誤資訊。 訊息方塊會傳回整數值,指出使用者按一下的按鈕。
MessageBoxEx 建立、顯示及操作訊息方塊。 訊息方塊包含應用程式定義的訊息和標題,以及預先定義圖示和按鈕的任何組合。 按鈕是系統使用者介面的語言。
MessageBoxIndirect 建立、顯示及操作訊息方塊。 訊息方塊包含應用程式定義的郵件內文和標題、任何圖示,以及預先定義按鈕的任何組合。
SendDlgItemMessage 將訊息傳送至對話方塊中的指定控制項。
SetDlgItemInt 將對話方塊中控制項的文字設定為指定整數值的字串表示。
SetDlgItemText 設定對話方塊中控制項的標題或文字。

對話方塊訊息

名稱 描述
DM_GETDEFID 擷取對話方塊的預設按鈕控制項識別碼。
DM_REPOSITION 重新置放最上層對話方塊,使其符合桌面區域。 應用程式可以在調整大小之後,將此訊息傳送至對話方塊,以確保整個對話方塊保持可見。
DM_SETDEFID 變更對話方塊的預設按鈕識別碼。

對話方塊通知

名稱 描述
WM_CTLCOLORDLG 在系統繪製對話方塊之前傳送至對話方塊。 藉由回應此訊息,對話方塊可以使用指定的顯示裝置內容控制碼來設定其文字和背景色彩。
WM_ENTERIDLE 傳送至進入閒置狀態之強制回應對話方塊或功能表的擁有者視窗。 當強制回應對話方塊或功能表在處理一或多個先前的訊息之後,沒有訊息在佇列中等候時,就會進入閒置狀態。
WM_GETDLGCODE 傳送至與 控制項相關聯的視窗程式。 根據預設,系統會處理控制項的所有鍵盤輸入;系統會將特定類型的鍵盤輸入解譯為對話方塊導覽鍵。 若要覆寫此預設行為,控制項可以回應 WM_GETDLGCODE 訊息,以指出其想要處理本身的輸入類型。
WM_INITDIALOG 在對話方塊顯示之前,立即傳送至對話方塊程式。 對話方塊程式通常會使用此訊息來初始化控制項,並執行會影響對話方塊外觀的任何其他初始化工作。
WM_NEXTDLGCTL 傳送至對話方塊程式,將鍵盤焦點設定為對話方塊中的不同控制項。

對話方塊結構

名稱 描述
DLGITEMTEMPLATE 定義對話方塊中控制項的維度和樣式。 其中一或多個結構會與 DLGTEMPLATE 結構結合,以形成對話方塊的標準範本。
DLGITEMTEMPLATEEX 描述擴充對話方塊。 如需擴充對話方塊範本格式的描述,請參閱 DLGTEMPLATEEX
DLGTEMPLATE 定義對話方塊的維度和樣式。 這個結構一律是對話方塊的標準範本中的第一個,也會指定對話方塊中的控制項數目,因此會指定範本中的後續 DLGITEMTEMPLATE 結構數目。
DLGTEMPLATEEX 擴充對話方塊範本的開頭是 DLGTEMPLATEEX 標頭,描述對話方塊,並指定對話方塊中的控制項數目。 針對對話方塊中的每個控制項,擴充對話方塊範本有一個資料區塊,該區塊會使用 DLGITEMTEMPLATEEX 格式來描述控制項。
MSGBOXPARAMS 包含用來顯示訊息方塊的資訊。 MessageBoxIndirect函式會使用此結構。