第六講 對話框的功能實現
對話框就好比是一個容器,只有將一些控件添加在這個容器中,才能實現用戶與對話框之間的交互。下面我們將前面的對話框設計成如圖13所示的界面,其功能是用來讓用戶調整視圖客戶區的背景顏色,設置的效果可在下方的矩形框中預覽。
圖13 設計的"設置"對話框
1. 界面實現的技巧
在圖13所示的對話框中所用到的控件有:組框 、靜態文本 、編輯框 、旋轉控件 和圖片控件 。
需要說明的是:
① "靜態文本"、"組框"和"圖片控件"都屬於靜態控件,一般不接收用戶輸入也沒有事件映射,其中"組框"控件可以把一些控件人為地劃分成一組,使界面更加清晰。"靜態文本"和"圖片控件"分別用來顯示文本內容和圖像資源(如圖標、位圖等)。
② "編輯框"是一個讓用戶從鍵盤輸入和編輯文本的矩形窗口,用戶通過它可以輸入各種文本、數字或者口令,也可使用它來編輯和修改簡單的文本內容。當編輯框被激活且具有輸入焦點時,就會出現一個閃動的插入符,表明當前插入點的位置。
③ "旋轉控件"(也稱為上下控件)是一對箭頭按鈕,用戶點擊它們來增加或減小某個值。一個"旋轉控件"通常附著於另一個控件,被附著的控件稱為"伙伴窗口"。通常"旋轉控件"和"編輯框"一起構成一個用於數字輸入的"數字編輯框"。
下面說明界面實現的技巧:
(1) 幾乎每一個控件都要設置自己的標題(Caption)內容。例如,圖13中組框的"背景顏色",靜態文本的"紅色顏色分量(R)"等。單擊要設置的控件,在屬性窗口中修改其Caption屬性內容。
(2) 若要使"旋轉控件"和"編輯框"組合一起,成為"伙伴"控件,必須使這兩個控件的Tab鍵次序相連續,且"編輯框"的Tab鍵次序在前。在對話框中, Tab鍵可以按照一定次序依次將輸入焦點從一個控件移動到另一個控件,這個次序稱為"Tab鍵次序"。由於默認的控件Tab鍵次序與添加的控件次序相同,因此我們添加上述控件要先添加一個"編輯框",然後再添加一個"旋轉控件"。另外,還需要在旋轉控件的屬性窗口中,將其Alignment(附著)屬性設為"右對齊 ",將Auto Buddy和Set Buddy Integer屬性均設為True。Alignment(附著)屬性用來指定旋轉控件在伙伴窗口的附著方式,它有三種方式:"取消附著"、"左對齊(Left)"和"右對齊"(Right)。Auto Buddy(自動伙伴)屬性為True時,旋轉控件自動前一個Tab鍵順序的控件作為自己的伙伴控件。Set Buddy Integer(設置伙伴窗口中的整數值) 屬性為True時,單擊旋轉控件的向上或向下按鈕將改變伙伴窗口中的整數值。
(3) 為了能預覽顯示效果,我們通過需要一個可以繪制圖形的控件。通常使用"靜態文本",但其Static Edge屬性要設為True或Sunken屬性設為True,這要看起來有下沉的立體感。當然我們也可以設置其他的外觀。
(4) 在"取消"按鈕上方有一條水平線,這是用圖片控件來設置的。方法是,添加一個圖片控件,調整其位置和大小。在其屬性窗口中,將其Type屬性選擇為"水平蝕刻"即可。
(5) 對於控件的ID號,雖然我們可以使用默認的標識符,但為了容易辨別起見,我們對在程序中需要操作的控件重新指定其ID號。下表就是本例中需要指定的各個控件的ID號和Caption屬性。
控 件
ID屬性
"紅色顏色分量"的編輯框
IDC_ EDIT_R
"紅色顏色分量"的旋轉控件
IDC_SPIN_R
"綠色顏色分量"的編輯框
IDC_ EDIT_G
"綠色顏色分量"的旋轉控件
IDC_SPIN_G
"藍色顏色分量"的編輯框
IDC_ EDIT_B
"藍色顏色分量"的旋轉控件
IDC_SPIN_B
靜態文本
IDC_DRAW
(6) 單擊對話框編輯器工具欄上的測試按鈕 ,可以彈出對話框的實際效果,如圖14所示。按ESC鍵或單擊對話框中的"確定"、"取消"等按鈕,退出對話框測試。需要說明的是,在Windows XP運行該程序,該對話框的實際效果比測試效果更佳。
圖14 "設置"對話框測試的效果