簡介
如果有很多輸入超出了功能表可以處理的程度,那么我們可以使用對話方塊來取得輸入資訊。程式寫作者可以通過在某選項後面加上省略號(…)來表示該功能表項將啟動一個對話方塊。
對話方塊的一般形式是包含多種子視窗控制項的彈出式視窗,這些控制項的大小和位置在程式資源描述檔的「對話方塊模板」中指定。雖然程式寫作者能夠「手工」定義對話方塊模板,但是現在通常是在Visual C++ Developer Studio中以交談式操作的方式設計的,然後由Developer Studio建立對話方塊模板。
詳細介紹
當程式呼叫依據模板建立的對話方塊時,Microsoft Windows 98負責建立彈出式對話方塊視窗和子視窗控制項,並提供處理對話方塊訊息(包括所有鍵盤和滑鼠輸入)的視窗訊息處理程式。有時候稱呼完成這些功能的Windows內部程式碼為「對話方塊管理器」。
Windows的內部對話方塊視窗訊息處理程式所處理的許多訊息也傳遞給您自己程式中的函式,這個函式即是所謂的「對話方塊程式」或者「對話程式」。對話程式與普通的視窗訊息處理程式類似,但是也存在著一些重要區別。一般來說,除了在建立對話方塊時初始化子視窗控制項,處理來自子視窗控制項的訊息以及結束對話方塊之外,程式寫作者不需要再給對話方塊程式增加其他功能。對話程式通常不處理WM_PAINT訊息,也不直接處理鍵盤和滑鼠輸入。
對話方塊這個主題的含義太廣了,因為它還包含子視窗控制項的使用。不過,我們已經在第九章研究了子視窗控制項。當您在對話方塊中使用子視窗控制項時,第九章所提到的許多工作都可以由Windows的對話方塊管理器來完成。尤其是,在程式COLORS1中遇到在捲動列之間切換輸入焦點的問題也不會在對話方塊中出現。Windows會處理對話方塊中的控制項之間切換輸入焦點所必需完成的全部工作。