說明
當使用者覺得讓對話方塊保留片刻會更加方便時,使用非模態對話方塊是合適的。例如,文書處理程式經常使用非模態對話方塊來進行「Find」和「Change」操作。如果「Find」對話方塊是模態的,那么使用者必須從功能表中選擇「Find」,然後輸入要尋找的字串,結束對話方塊,傳回到檔案中,接著再重複整個程式來尋找同一字串的另一次出現。允許使用者在檔案與對話方塊之間進行切換則會方便得多。
您已經看到,模態對話方塊是用DialogBox來建立的。只有在清除對話方塊之後,函式才會傳回值。在對話方塊程式內使用EndDialog呼叫來終止對話方塊,DialogBox傳回的是該呼叫的第二個參數的值。非模態對話方塊是使用CreateDialog來建立的,該函式所使用的參數與DialogBox相同。
hDlgModeless = CreateDialog ( hInstance, szTemplate,
hwndParent, DialogProc) ;
區別是CreateDialog函式立即傳回對話方塊的視窗代號,並通常將這個視窗代號存放到整體變數中。
儘管將DialogBox這一名字用於模態對話方塊而CreateDialog用於非模態對話方塊是隨意的,但是您可以通過非模態對話方塊與普通視窗類似這一點來記住這兩個函式的區別。CreateDialog可以令人想起CreateWindow函式來,而後者建立的是普通視窗。