C++教程 第5章_第1頁
C++教程 第5章_第2頁
C++教程 第5章_第3頁
C++教程 第5章_第4頁
C++教程 第5章_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、對話框與控件對話框與控件第第5 5章章本章主要內(nèi)容本章主要內(nèi)容o5.1 5.1 對話框概述對話框概述 o5.2 5.2 使用對話框使用對話框 o5.3 5.3 標準控件標準控件 o5.4 5.4 公共控件公共控件 o5.5 5.5 綜合實例綜合實例 5.1 5.1 對話框概述對話框概述 o5.1.1 5.1.1 對話框的組成與分類對話框的組成與分類 o5.1.2 5.1.2 基于對話框的應用程序基于對話框的應用程序 o5.1.3 5.1.3 對話框類對話框類CDialogCDialog o5.1.4 5.1.4 對話框數(shù)據(jù)交換對話框數(shù)據(jù)交換DDXDDX和驗證和驗證DDVDDV o5.1.5 5

2、.1.5 提示信息對話框提示信息對話框 5.1.1 5.1.1 對話框的組成與分類對話框的組成與分類o對話框主要由對話框資源和對話框類組成。對話框主要由對話框資源和對話框類組成。n對話框資源確定了對話框窗口的表現(xiàn)形式對話框資源確定了對話框窗口的表現(xiàn)形式o對話框的大小、風格等特性及對話框中控件的類型及位置對話框的大小、風格等特性及對話框中控件的類型及位置o一個數(shù)據(jù)結(jié)構(gòu)一個數(shù)據(jù)結(jié)構(gòu)n對話框類提供了對話框的編程接口對話框類提供了對話框的編程接口o要利用對話框資源創(chuàng)建對話框類,提供編程的接口管理對要利用對話框資源創(chuàng)建對話框類,提供編程的接口管理對話框話框o對話框有兩種類型:對話框有兩種類型:模態(tài)對話框

3、和非模態(tài)對話模態(tài)對話框和非模態(tài)對話框??颉兩種對話框在用資源編輯器設計和使用兩種對話框在用資源編輯器設計和使用ClassWizardClassWizard進行編程時的方法基本一致,但進行編程時的方法基本一致,但在創(chuàng)建和退出窗口時的方式有所不同。在創(chuàng)建和退出窗口時的方式有所不同。n 在創(chuàng)建時,模態(tài)對話框式由系統(tǒng)自動分配內(nèi)在創(chuàng)建時,模態(tài)對話框式由系統(tǒng)自動分配內(nèi)存空間,因此,在退出對話框時,對話框?qū)ο髸婵臻g,因此,在退出對話框時,對話框?qū)ο髸詣觿h除;非模態(tài)對話框則是需要用戶來指定內(nèi)自動刪除;非模態(tài)對話框則是需要用戶來指定內(nèi)存,退出時還需用戶自己來刪除對話框?qū)ο?。存,退出時還需用戶自己來刪除對話

4、框?qū)ο?。n 在退出時,兩種對話框所使用的終止函數(shù)不在退出時,兩種對話框所使用的終止函數(shù)不一樣。模態(tài)對話框通過調(diào)用一樣。模態(tài)對話框通過調(diào)用CDialog:EndDialogCDialog:EndDialog來終止;非模態(tài)對話框通過調(diào)用來終止;非模態(tài)對話框通過調(diào)用CWnd:DestroyWindowCWnd:DestroyWindow來終止。來終止。5.1.3 5.1.3 對話框類對話框類CDialogCDialogoCDialogCDialog類的派生關(guān)系如圖所示類的派生關(guān)系如圖所示 CDialog CDialog類是類是CWndCWnd類的繼承類,所以它繼承了類的繼承類,所以它繼承了CWndC

5、Wnd的基本的基本功能,如移動窗口、改變窗口大小、關(guān)閉窗口等。功能,如移動窗口、改變窗口大小、關(guān)閉窗口等。CDialogCDialog類類通過對話框的一些特定的特性擴展了基本功能。這些特性包通過對話框的一些特定的特性擴展了基本功能。這些特性包括生成和顯示對話框的功能、遍歷對話框的控件、設置和恢括生成和顯示對話框的功能、遍歷對話框的控件、設置和恢復默認按鈕等。復默認按鈕等。CDialogCDialog類經(jīng)常使用的成員函數(shù)列于下表類經(jīng)常使用的成員函數(shù)列于下表 成員函數(shù) 說明 CDialog:CDialog 構(gòu)造函數(shù),根據(jù)對話框資源模板定義一個對話框 CDialog:Create 創(chuàng)建非模態(tài)對話框窗

6、口,若對話框不是 Visible 屬性,需調(diào)用CWnd:ShowWindow 函數(shù)顯示非模態(tài)對話框窗口 CDialog:DoModal 激活模態(tài)對話框,顯示對話框窗口 CDialog:OnInitDialog WM_INITDIALOG 的消息處理函數(shù), 在調(diào)用 DoModal 或 Create函數(shù)是系統(tǒng)發(fā)送 WM_INITDIALOG 消息, 顯示對話框前進行初始化 CDialog:EndDialog 關(guān)閉模態(tài)對話框窗口。 CDialog:OnOK 單擊【OK】按鈕調(diào)用該函數(shù),接受對話框輸入數(shù)據(jù),關(guān)閉對話框 CDialog:OnCancel 單擊【Cacel】按鈕或【Esc】鍵時調(diào)用該函數(shù),

7、不結(jié)束對話框輸入數(shù)據(jù),關(guān)閉對話框 CWnd:ShowWindow 顯示或隱藏對話框窗口 CWnd:DestoryWindow 關(guān)閉并銷毀非模態(tài)對話框 CWnd:GetWindowText 獲取對話框窗口的標題 CWnd:SetWindowText 設置對話框窗口的標題 CWnd:UpdateData 調(diào)用 DoDataExchange 設置或獲取對話框控件的數(shù)據(jù) CWnd:DoDataExchange 被 UpdateData 調(diào)用實現(xiàn)對話框數(shù)據(jù)交換,不能直接訪問 CWnd:MoveWindow 移動對話框窗口 CWnd:EnableWindow 是窗口處于可用或禁用狀態(tài) CDialogCDi

8、alog類的四個基本函數(shù)類的四個基本函數(shù) oOnInitDialogOnInitDialog oDoModalDoModal oOnOkOnOk oOnCancelOnCancel 5.1.4 5.1.4 對話框數(shù)據(jù)交換對話框數(shù)據(jù)交換DDXDDX和驗證和驗證DDVDDVo對話數(shù)據(jù)交換對話數(shù)據(jù)交換(DDX)(DDX)用于初始化對話框中的控用于初始化對話框中的控件并獲取用戶的數(shù)據(jù)輸入,而對話框數(shù)據(jù)驗件并獲取用戶的數(shù)據(jù)輸入,而對話框數(shù)據(jù)驗證證(DDV)(DDV)則用于自動驗證對話框中的數(shù)據(jù)輸入。則用于自動驗證對話框中的數(shù)據(jù)輸入。o要 在 對 話 框 中 使 用要 在 對 話 框 中 使 用 D D

9、XD D X 和和 D D VD D V , 必 須 用, 必 須 用ClassWizardClassWizard創(chuàng)建數(shù)據(jù)成員、設置數(shù)據(jù)類型并創(chuàng)建數(shù)據(jù)成員、設置數(shù)據(jù)類型并指定驗證規(guī)則。指定驗證規(guī)則。 5.1.5 5.1.5 提示信息對話框提示信息對話框o提示信息對話框也稱消息對話框,是用于顯示簡單信息的提示信息對話框也稱消息對話框,是用于顯示簡單信息的一類對話框,不需要用戶創(chuàng)建可以直接使用。在一類對話框,不需要用戶創(chuàng)建可以直接使用。在Visual Visual C+C+的的MFCMFC類庫中提供了三個相應的函數(shù),它們分別是類庫中提供了三個相應的函數(shù),它們分別是CWnd:MessageBoxCW

10、nd:MessageBox、MessageBoxMessageBox和和AfxMessageBoxAfxMessageBox和函數(shù)。和函數(shù)。o這三個函數(shù)分別是這三個函數(shù)分別是CWndCWnd類的成員函數(shù)、類的成員函數(shù)、Windows APIWindows API函數(shù)函數(shù)和和MFCMFC全局函數(shù)。三者的功能基本相同,但適用范圍是有全局函數(shù)。三者的功能基本相同,但適用范圍是有區(qū)別的。區(qū)別的。AfxMessageBoxAfxMessageBox函數(shù)和函數(shù)和:MessageBox:MessageBox,在程序中,在程序中的任何位置都可調(diào)用;而的任何位置都可調(diào)用;而CWnd:MessageBoxCWnd

11、:MessageBox函數(shù)只能用于函數(shù)只能用于象控件、對話框和窗口等窗口類中。象控件、對話框和窗口等窗口類中。 提示信息對話框常用圖標類型提示信息對話框常用圖標類型 圖標類型取值 圖標類型 MB_ICONHAND、MB_ICONSTOP 和MB_ICONERROR 叉號圖標 MB_ICONQUESTION 問號圖標 MB_ICONEXCLAMATION、MB_ICONWARNING 驚嘆號圖標 MB_ICONASTERISK、MB_ICONINFORMATION 信息圖標 提示信息對話框常用按鈕類型提示信息對話框常用按鈕類型 按鈕類型取值 按鈕類型 MB_ABORTRETRYIGNORE 顯示

12、【關(guān)于】 、 【重試】 、 【忽略】3 個按鈕 MB_OK 顯示【是】按鈕 MB_OKCANCEL 顯示【確定】 、 【取消】按鈕 MB_RETRYCANCEL 顯示【重試】 、 【取消】按鈕 MB_YESNO 顯示【是】 、 【否】按鈕 MB_YESNOCANCEL 顯示【是】 、 【否】 、 【取消】按鈕 在實際使用中,圖標類型及按鈕類型的取值可通過在實際使用中,圖標類型及按鈕類型的取值可通過“|”|”組合。組合。 在提示消息對話框中單擊不同的按鈕,其返回值是不同的,在提示消息對話框中單擊不同的按鈕,其返回值是不同的,該返回值也是由該返回值也是由MFCMFC預定義的標識符來表示的。預定義的

13、標識符來表示的。被單擊的按鈕 函數(shù)返回值 單擊【終止】按鈕 IDABORT 單擊【取消】按鈕 IDCANCEL 單擊【忽略】按鈕 IDIGNORE 單擊【否】按鈕 IDNO 單擊【確定】按鈕 IDOK 單擊【重試】按鈕 IDRETRY 單擊【是】按鈕 IDYES 5.2 5.2 使用對話框使用對話框 o5.2.1 5.2.1 一般對話框工作流程一般對話框工作流程 o5.2.2 5.2.2 創(chuàng)建對話框創(chuàng)建對話框 o5.2.3 5.2.3 添加控件及關(guān)聯(lián)的成員變量添加控件及關(guān)聯(lián)的成員變量 o5.2.4 5.2.4 非模態(tài)對話框非模態(tài)對話框 o5.2.5 5.2.5 公用對話框公用對話框 5.2.1

14、 5.2.1 一般對話框工作流程一般對話框工作流程 OK Cancel 調(diào)用用戶定義的對話框類構(gòu)造函數(shù) CHelloDlg:CHelloDlg 創(chuàng)建對話框?qū)ο?調(diào)用 CHelloDlg:DoModal 顯示對話框窗口 OK/Cancel 調(diào)用 CHelloDlg:OnOK,返回 IDOK 調(diào)用 CHelloDlg:OnCancel,返回 IDCANCEL 從 CDialog:DoModal 返回 調(diào)用 CDialog:DoModal 調(diào)用 CHelloDlg:OnInitDialog 調(diào)用 CDialog:OnInitDialog 調(diào)用 CWnd:UpdateData(FALSE) 調(diào)用 CH

15、elloDlg:DoDataExchange 調(diào)用 CWnd:UpdateData(TRUE)接收數(shù)據(jù) 調(diào)用 CDialog: EndDialog 關(guān)閉對話框 5.2.2 5.2.2 創(chuàng)建對話框創(chuàng)建對話框o在程序中創(chuàng)建一個對話框,首先要創(chuàng)建一個對話框資源,在程序中創(chuàng)建一個對話框,首先要創(chuàng)建一個對話框資源,然后創(chuàng)建一個基于該對話框資源的對話框類。然后創(chuàng)建一個基于該對話框資源的對話框類。o對話框資源指定了對話框本身的屬性和對話框中控件的對話框資源指定了對話框本身的屬性和對話框中控件的屬性,對話框類規(guī)定了對話框和對話框中每個控件的行屬性,對話框類規(guī)定了對話框和對話框中每個控件的行為。為。 “Cont

16、rols”“Controls”工具欄工具欄 編輯框 控件的選擇 靜態(tài)文本 組框 復選框 組合框 水平滾動條 微調(diào)按鈕 滑動條 列表視圖 標簽 復合編輯 月歷 用戶定制工具 靜態(tài)圖片 按鈕 單選框 垂直滾動條 列表框 進展條 熱鍵 動畫 樹形視圖 日期選擇 IP 地址 組合框的擴展 “Dialog”“Dialog”工具欄工具欄 圖形 名稱 說明 Test 單獨運行對話框來測試對話框的外觀和行為 Align Left 將選定的多個控件按照左邊界對齊的格式放置 Align Right 將選定的多個控件按照右邊界對齊的格式放置 Align Top 將選定的多個控件按照上邊界對齊的格式放置 Align

17、Bottom 將選定的多個控件按照下邊界對齊的格式放置 Central Vertical 將選定的一個或多個控件按照中心垂直對齊的格式放置 Central Horizontal 將選定的一個或多個控件按照水平垂直對齊的格式放置 Space Across 將選定的多個控件兩兩之間的水平間隔調(diào)整相同 Space Down 將選定的多個控件兩兩之間的垂直間隔調(diào)整相同 Make Same Width 使選定的多個控件具有相同的寬度, 寬度的標準是最后選擇的控件的寬度 Make Same Height 使選定的多個控件具有相同的高度, 高度的標準是最后選擇的控件的高度 Make Same Size 使選

18、定的多個控件具有相同的寬度和高度, 寬度和高度的標準是最后選擇的控件的大小 Toggle Grid 顯示或隱藏網(wǎng)格 Toggle Guides 顯示或隱藏標尺 5.2.3 5.2.3 添加控件及關(guān)聯(lián)的成員變量添加控件及關(guān)聯(lián)的成員變量o1 1 添加控件添加控件 o2 2 添加關(guān)聯(lián)的成員變量添加關(guān)聯(lián)的成員變量 o3 3 添加成員變量后的程序分析添加成員變量后的程序分析 o4 4 映射變量的管理映射變量的管理 o5 5 對話框類的實現(xiàn)對話框類的實現(xiàn) 1 1 添加控件添加控件o在控件工具欄中選擇所需要的控件,按下鼠標在控件工具欄中選擇所需要的控件,按下鼠標的左鍵(不要松開),將鼠標拖到對話框中松的左鍵

19、(不要松開),將鼠標拖到對話框中松開,在對話框中添加一個指定的控件。開,在對話框中添加一個指定的控件。o按照修改對話框標題的方法對每個控件的按照修改對話框標題的方法對每個控件的“ID”ID”和和“Caption”Caption”o進行修改,如表所示。各個控件的風格按照默進行修改,如表所示。各個控件的風格按照默認方式設置。認方式設置。 4 4 映射變量的管理映射變量的管理o(1 1)映射變量的定義)映射變量的定義 映射變量必須定義在以下兩行代碼之間,才能被映射變量必須定義在以下兩行代碼之間,才能被ClassWizardClassWizard識識別和處理:別和處理: /AFX_DATA(CMate

20、rialDlg) /AFX_DATA(CMaterialDlg) /(括號內(nèi)為映射變量所屬的類)(括號內(nèi)為映射變量所屬的類) /AFX_DATA/AFX_DATAo(2 2)映射變量的初始化)映射變量的初始化 映射變量的初始化必須放在以下兩行代碼(在對話框類的構(gòu)映射變量的初始化必須放在以下兩行代碼(在對話框類的構(gòu) 造函數(shù)中)之間,才能被造函數(shù)中)之間,才能被ClassWizardClassWizard識別和處理:識別和處理: / /AFX_DATA_INIT(CMaterialDlg)AFX_DATA_INIT(CMaterialDlg) /AFX_DATA_INIT /AFX_DATA_IN

21、ITo(3 3)映射變量與對話框控制間的映射宏)映射變量與對話框控制間的映射宏 映射變量與對話框控制間的映射宏必須放在以下兩行代碼映射變量與對話框控制間的映射宏必須放在以下兩行代碼(在(在函數(shù)函數(shù)DoDataExchangeDoDataExchange中中)之間,才能被)之間,才能被ClassWizardClassWizard識別和處識別和處理理: / /AFX_DATA_MAP(CMaterialDlg)AFX_DATA_MAP(CMaterialDlg) /AFX_DATA_MAP /AFX_DATA_MAP 5.2.4 非模態(tài)對話框非模態(tài)對話框o創(chuàng)建對話框創(chuàng)建對話框CreateCreat

22、e o顯示對話框顯示對話框CWnd:ShowWindowCWnd:ShowWindow o消息循環(huán)部分的處理消息循環(huán)部分的處理CWnd:IsDialogMessageCWnd:IsDialogMessage o關(guān)閉對話框關(guān)閉對話框CWnd:DestroyWindowCWnd:DestroyWindow 5.2.55.2.5、公用對話框、公用對話框( (略)略)o“顏色顏色”對話框?qū)υ捒騩“字體字體”對話框?qū)υ捒騩“打開打開”對話框?qū)υ捒騩“保存保存”對話框?qū)υ捒騩“打印機設置打印機設置”對話框等,對話框等,o以上對話框類都是從一個公共的基類以上對話框類都是從一個公共的基類CCommonDial

23、ogCCommonDialog派生出來的,而派生出來的,而CCommonDialogCCommonDialog類又是類又是CDialogCDialog類的派生類。下表列出了這些類的派生類。下表列出了這些類及其用途。類及其用途。 通用對話框類 用途 CFileDialog 文件對話框,用戶可打開或保存對話框 CFontDialog 字體對話框,允許用戶從列出的字體種選擇所需要的字體 CColorDialog 顏色對話框,用戶可從中選擇或創(chuàng)建顏色 CPageSetupDialog 頁面設置對話框,允許用戶設置頁面參數(shù) CPrintDialog 打印對話框,允許用戶設置打印機的參數(shù)及打印文檔 CFi

24、ndReplaceDialog 查找替換對話框,允許用戶查找或替換指定字符串 COleDialog 該類及其派生類用于生成 OLE 應用程序?qū)υ捒?5.3 5.3 標準控件標準控件o5.3.1 5.3.1 控件概述控件概述o5.3.5.3.2 2 控件的組織控件的組織 o5.3.3 5.3.3 控件公有屬性控件公有屬性 o5.3.4 5.3.4 靜態(tài)控件靜態(tài)控件o5.3.5 5.3.5 編輯框編輯框o5.3.6 5.3.6 按鈕按鈕o5.3.7 5.3.7 列表框列表框o5.3.8 5.3.8 組合框組合框o5.3.9 5.3.9 滾動條滾動條5.3.1 5.3.1 控件概述控件概述o控件是控

25、件是WindowsWindows圖形用戶界面的主要組成部分之一,用戶通圖形用戶界面的主要組成部分之一,用戶通過操作控件對象完成與應用程序之間的交互。過操作控件對象完成與應用程序之間的交互。MFC 類 說明 CButton 代表一個按鈕的小長方形的子窗口(按鈕控件) CComboBox 代表一個選擇列表框的子窗口(組合框控件) CEdit 代表一個接收用戶輸入的文本輸入子窗口(編輯框控件) CListBox 代表字符串列表的子窗口(列表框控件) CScrollBar 代表一個滾動條的子窗口(滾動條控件) CStatic 代表一個顯示靜態(tài)文本的子窗口(靜態(tài)控件) 5.3.2 5.3.2 控件的組織

26、控件的組織o1 1 添加和刪除控件添加和刪除控件 o2 2 選擇控件選擇控件 o3 3 調(diào)整控件的大小調(diào)整控件的大小 o4 4 移動控件移動控件 o5 5 復制控件復制控件 o6 6 設置屬性設置屬性 o7 7 設置【設置【TabTab】鍵順序】鍵順序 o8 8 測試對話框資源測試對話框資源 1 1 添加和刪除控件添加和刪除控件o添加控件的方法有兩種:添加控件的方法有兩種:n(1 1)在控件工具欄中選擇所需要的控件,按下鼠標的)在控件工具欄中選擇所需要的控件,按下鼠標的左鍵(不要松開),將鼠標拖到對話框中松開,在對左鍵(不要松開),將鼠標拖到對話框中松開,在對話框中添加一個指定的控件。話框中添

27、加一個指定的控件。n(2 2)在控件工具欄中單擊需要的控件,此時,控件呈)在控件工具欄中單擊需要的控件,此時,控件呈凹下狀態(tài),將鼠標拖到對話框,鼠標成凹下狀態(tài),將鼠標拖到對話框,鼠標成“+”+”字形顯示,字形顯示,在對話框中按下鼠標左鍵拖到適當大小后松開,在對在對話框中按下鼠標左鍵拖到適當大小后松開,在對話框中添加一個指定的控件。話框中添加一個指定的控件。o刪除已添加的控件,只要選擇對話框中的控件,按下刪除已添加的控件,只要選擇對話框中的控件,按下【DelDel】鍵即可。鍵即可。 2 2 選擇控件選擇控件o選取單個按鈕:單擊選取單個按鈕:單擊“Control”Control”工具欄中的選取工具

28、欄中的選取按鈕,然后移動鼠標到對話框上的某個控件上,單按鈕,然后移動鼠標到對話框上的某個控件上,單擊鼠標左鍵即可。擊鼠標左鍵即可。o選取多個控件的方法有兩種:選取多個控件的方法有兩種: 在對話框內(nèi)按住鼠標左鍵不放,拖出一個虛框,在對話框內(nèi)按住鼠標左鍵不放,拖出一個虛框,釋放鼠標,則被虛框包圍的控件全部被選取。釋放鼠標,則被虛框包圍的控件全部被選取。 按住按住【ShiftShift】鍵,用鼠標一次單擊所要選取鍵,用鼠標一次單擊所要選取的控件,然后放開的控件,然后放開【ShiftShift】鍵。鍵。3 3 調(diào)整控件的大小調(diào)整控件的大小o選取控件后,用鼠標指針指向其周圍的藍色選取控件后,用鼠標指針指

29、向其周圍的藍色小方框,待鼠標光標形狀變成雙向箭頭時,小方框,待鼠標光標形狀變成雙向箭頭時,拖動鼠標將控件變到所需要的大小時放開鼠拖動鼠標將控件變到所需要的大小時放開鼠標。標。 4 4 移動控件移動控件 o當控件被選取后,按鍵盤上的方向鍵或用鼠當控件被選取后,按鍵盤上的方向鍵或用鼠標拖動到所需要的位置即可。標拖動到所需要的位置即可。 5 5 復制控件復制控件 o1 1、當控件被選取后,按下鍵盤上的、當控件被選取后,按下鍵盤上的【CtrlCtrl】鍵不放,用鼠標拖動到所需要的位置,然后放鍵不放,用鼠標拖動到所需要的位置,然后放開開【CtrlCtrl】鍵即可;鍵即可;o2 2、當控件被選取后,按住、

30、當控件被選取后,按住【Ctrl+CCtrl+C】鍵復制,鍵復制,再粘貼,把復制后的控件用鼠標移動到所需要再粘貼,把復制后的控件用鼠標移動到所需要的位置即可。的位置即可。 6 6 設置屬性設置屬性 o將光標指向?qū)υ捒蛑械目丶覔羰髽?,彈出的快捷菜單將光標指向?qū)υ捒蛑械目丶?,右擊鼠標,彈出的快捷菜單中選擇中選擇“Properties”Properties”菜單項,彈出菜單項,彈出“Properties”Properties”對話對話框,在框,在“Properties”Properties”對話框中設置屬性。有時為了修改對話框中設置屬性。有時為了修改多個控件的屬性,方便起見,按下多個控件的屬性,方

31、便起見,按下 “Properties”Properties”對話對話框的框的【圖釘圖釘】按鈕,這樣按鈕,這樣“Properties”Properties”對話框始終保持對話框始終保持打開,打開,7 7 設置【設置【TabTab】鍵順序】鍵順序 o選擇選擇“Layout”Layout”菜單中的菜單中的“Tab Order”Tab Order”菜單項,或直接按菜單項,或直接按下下【Ctrl+DCtrl+D】鍵,此時,對話框中每一個控件的左上角會鍵,此時,對話框中每一個控件的左上角會出現(xiàn)一個數(shù)字標簽,這個數(shù)字標簽代表了默認的出現(xiàn)一個數(shù)字標簽,這個數(shù)字標簽代表了默認的【TabTab】鍵鍵順序。以下面的

32、順序依次用鼠標左鍵單擊每一個控件:順序。以下面的順序依次用鼠標左鍵單擊每一個控件: ( (1) IDC_STATIC (2) IDC_EDIT_NAME (3) IDC_STATIC1) IDC_STATIC (2) IDC_EDIT_NAME (3) IDC_STATIC (4) IDC_EDIT_DATE (5) IDC_STATIC 6) IDC_EDIT_PRICE (4) IDC_EDIT_DATE (5) IDC_STATIC 6) IDC_EDIT_PRICE (7) IDC_STATIC 8) IDC_RADIO_ARTIC 9) IDC_RADIO_COMPUTER (7)

33、IDC_STATIC 8) IDC_RADIO_ARTIC 9) IDC_RADIO_COMPUTER (10) IDC_RADIO_COSTER (11) IDC_STATIC(12) IDC_EDIT_USER (10) IDC_RADIO_COSTER (11) IDC_STATIC(12) IDC_EDIT_USER (13) IDC_STATIC (14) IDC_COMBO_POSITION (13) IDC_STATIC (14) IDC_COMBO_POSITION8 8 測試對話框資源測試對話框資源 o選擇選擇“Dialog”Dialog”工具欄中的工具欄中的【TestTes

34、t】按鈕,按鈕,就可以測試對話框資源。就可以測試對話框資源。 5.3.3 5.3.3 控件公有屬性控件公有屬性o在對話框中的控件上單擊鼠標右鍵,然后在出在對話框中的控件上單擊鼠標右鍵,然后在出現(xiàn)的快捷菜單中單擊現(xiàn)的快捷菜單中單擊“Properties”Properties”菜單項,菜單項,彈出控件的屬性對話框,如圖所示。彈出控件的屬性對話框,如圖所示。 項目 說明 ID 控件的標識符,每種控件都有缺省的標識符。 Caption 控件的標題,大多數(shù)控件都有缺省的標題。 Visible 指定控件初始化是否可見。選中表示控件可見;否則不可見。 Group 指定控件組中的第一個控件。 選中表示控件后的

35、所有控件均被看成是同一組。成組的目的是為了讓用戶可以用鍵盤方向鍵在同一組控件中進行切換。 Help ID 若該項選中,則為該控件建立一個上下文相關(guān)的幫助標識符。 Disabled 指定控件初始化時是否禁用。選中表示控件不可用,呈灰色顯示;否則可用 Tab stop 若該項被選中,則用戶可以使用【Tab】鍵選擇控件 5.3.4 5.3.4 靜態(tài)控件靜態(tài)控件o靜態(tài)控件靜態(tài)控件(Static Control)(Static Control)是一種包含正文或圖形的小窗是一種包含正文或圖形的小窗口,通常是用來顯示一個字符串、框、矩形、圖標、位圖口,通常是用來顯示一個字符串、框、矩形、圖標、位圖或增強的圖

36、元文件的。靜態(tài)控件包括靜態(tài)文本或增強的圖元文件的。靜態(tài)控件包括靜態(tài)文本(Static (Static Text)Text)、組框、組框(Group Box)(Group Box)和靜態(tài)圖片和靜態(tài)圖片(Picture)3(Picture)3種。種。o靜態(tài)文本控件用來顯示一般不需要變化的文本;靜態(tài)文本控件用來顯示一般不需要變化的文本;o組框控件用來顯示一個文本標題和一個矩形邊框,通常將組框控件用來顯示一個文本標題和一個矩形邊框,通常將一組控件組織在一起;一組控件組織在一起;o圖片控件用來顯示邊框、矩形、圖標或位圖等圖形。圖片控件用來顯示邊框、矩形、圖標或位圖等圖形。 5.3.5 5.3.5 編輯框

37、編輯框o編輯框編輯框(Edit Box)(Edit Box)的主要作用在于接收用戶鍵的主要作用在于接收用戶鍵盤輸入,用戶可在編輯框中編輯輸入。編輯框盤輸入,用戶可在編輯框中編輯輸入。編輯框是是WindowsWindows應用程序中一種重要的交互工具。應用程序中一種重要的交互工具。o編輯框可以有以下功能特點:編輯框可以有以下功能特點:n可自動轉(zhuǎn)換用戶輸入,如大小寫轉(zhuǎn)換等;可自動轉(zhuǎn)換用戶輸入,如大小寫轉(zhuǎn)換等;n可使用某個字符可使用某個字符( (如如* *) )代替顯示用戶的輸入;代替顯示用戶的輸入;n可支持多行編輯等??芍С侄嘈芯庉嫷取?編輯框的常用屬性及其說明編輯框的常用屬性及其說明 屬性屬性說

38、明說明Multiline建立多行文本編輯框建立多行文本編輯框Align text設置文本對齊方式設置文本對齊方式Number只能輸入數(shù)字只能輸入數(shù)字Password編輯框作為密碼文本框的字符形式編輯框作為密碼文本框的字符形式Border設置控件周圍的邊框設置控件周圍的邊框Uppercase所有的字母都大寫所有的字母都大寫Lowercase所有的字母都小寫所有的字母都小寫Read-Only文本只讀文本只讀編輯框的基本操作編輯框的基本操作 o為了能讓編輯框控件允許不同類型數(shù)據(jù)的輸入為了能讓編輯框控件允許不同類型數(shù)據(jù)的輸入和讀取,用戶需要使用和讀取,用戶需要使用DDVDDV和和DDXDDX技術(shù)。技術(shù)

39、。DDXDDX將將控件的成員變量同對話框類的控件相連接,這控件的成員變量同對話框類的控件相連接,這樣使得數(shù)據(jù)在控件之間很容易地傳輸;樣使得數(shù)據(jù)在控件之間很容易地傳輸;DDVDDV用用于數(shù)據(jù)的校驗。于數(shù)據(jù)的校驗。 口令設置口令設置 o口令設置就是把編輯框設置成一個可輸入口令口令設置就是把編輯框設置成一個可輸入口令的輸入框。的輸入框。o用戶輸入的每個字符都被一個特殊的字符代替用戶輸入的每個字符都被一個特殊的字符代替顯示,這個特殊的字符稱為口令字符。顯示,這個特殊的字符稱為口令字符。o選擇編輯框的屬性對話框的選擇編輯框的屬性對話框的“Styles”Styles”選項卡,選項卡,選中選中“Passwo

40、rd”Password”就將編輯框設置成一個可輸就將編輯框設置成一個可輸入口令的輸入框。缺省的口令字符是入口令的輸入框。缺省的口令字符是“* *”。o應用程序可以使用成員函數(shù)應用程序可以使用成員函數(shù)CEdit:SetPassWordCharCEdit:SetPassWordChar來定義自己的口令字來定義自己的口令字符。符。選擇文本選擇文本 o用鼠標選擇文本的方法是:在要選擇的文本的用鼠標選擇文本的方法是:在要選擇的文本的一端按下鼠標左鍵并拖動鼠標,到另一端釋放一端按下鼠標左鍵并拖動鼠標,到另一端釋放鼠標鍵;鼠標鍵;o用鍵盤選擇文本的方法是:在按光標方向移動用鍵盤選擇文本的方法是:在按光標方向

41、移動鍵的同時按住鍵的同時按住【ShiftShift】鍵。鍵。o在應用程序中通過調(diào)用成員函數(shù)在應用程序中通過調(diào)用成員函數(shù)CEdit:SetSelCEdit:SetSel來實現(xiàn)。來實現(xiàn)。只讀設置只讀設置 o只讀設置就是把編輯框設置成一個只讀的編輯只讀設置就是把編輯框設置成一個只讀的編輯框,這時該編輯框只能讀不能輸入和修改???,這時該編輯框只能讀不能輸入和修改。o設置的方法是選擇編輯框的屬性對話框的設置的方法是選擇編輯框的屬性對話框的“Styles”Styles”選項卡,選中選項卡,選中“Read-only”Read-only”就將就將編輯框設置成一個只讀的編輯框。編輯框設置成一個只讀的編輯框。o也

42、可以通過編程來實現(xiàn)編輯框的只讀設置,需也可以通過編程來實現(xiàn)編輯框的只讀設置,需要調(diào)用成員函數(shù)要調(diào)用成員函數(shù)CEdit:SetReadOnlyCEdit:SetReadOnly來實現(xiàn)。來實現(xiàn)。常見編輯框的通知消息常見編輯框的通知消息 消息取值 說明 EN_CHANGE 用戶在編輯框子窗口中更改了輸入框中的數(shù)據(jù) EN_ERRSPACE 編輯框的空間已用完 EN_HSCROLL 水平滾動條被按下并披激活 EN_KILLFOUCS 編輯框失去輸入焦點 EN_MAXTEXT 輸入的正文數(shù)超過了編輯框的最大容量 EN_SETFOUCS 編輯框子窗口獲得輸入焦點 EN_UPDATE 編輯框子窗口將更新顯示內(nèi)

43、容 EN_VSCROLL 垂直滾動條被按下并激活 5.3.6 5.3.6 按鈕按鈕o按鈕按鈕(Button)(Button)是是WindowsWindows對話框中最常用的控件之一。按對話框中最常用的控件之一。按鈕控件的類型比較豐富鈕控件的類型比較豐富o按鈕的種類:按鈕的種類:(1 1)普通按鈕)普通按鈕(Button)(Button) 普通按鈕是最常用的按鈕,其外觀為矩形條,按鈕上可設置普通按鈕是最常用的按鈕,其外觀為矩形條,按鈕上可設置文本或圖標、位圖等。文本或圖標、位圖等。(2 2)單選按鈕)單選按鈕(Radio Button)(Radio Button) 單選按鈕的外形為按鈕文本和其左

44、側(cè)的小圓框,當單選按鈕單選按鈕的外形為按鈕文本和其左側(cè)的小圓框,當單選按鈕被選中時,該項的圓框?qū)⒓狱c顯示。單選按鈕所包含的各被選中時,該項的圓框?qū)⒓狱c顯示。單選按鈕所包含的各選項之間一般存在互斥性,即用戶只能選擇其中某個選項。選項之間一般存在互斥性,即用戶只能選擇其中某個選項。(3 3)復選框)復選框(Check Box)(Check Box) 復選框的外形為按鈕文本和其左側(cè)的小方框,當復選框按復選框的外形為按鈕文本和其左側(cè)的小方框,當復選框按選中時,該項的方框?qū)⒓訉μ栵@示。復選框常用來顯示一選中時,該項的方框?qū)⒓訉μ栵@示。復選框常用來顯示一組選項供用戶選擇。組選項供用戶選擇。消息取值 說明

45、BN_CLICKED 用戶在按鈕子窗口中單擊 BN_DOUBLECLICKED 用戶在按鈕子宙口中雙擊 BN_SETFOUCS 按鈕獲得輸入焦點 BN_KILLFOUCS 按鈕失去輸入焦點 常見按鈕的通知消息類型常見按鈕的通知消息類型 5.3.7 5.3.7 列表框列表框o列表框列表框(List Box)(List Box)是一個允許用戶從已有的項是一個允許用戶從已有的項目中進行選擇的控件。目中進行選擇的控件。MFCMFC的的CListBoxCListBox類封裝類封裝了列表框控件的各種操作。了列表框控件的各種操作。 列表框的基本操作列表框的基本操作 o添加列表項添加列表項AddStringA

46、ddString和和InsertStringInsertString、SetItemDataSetItemData和和SetItemDataPtrSetItemDataPtr、GetItemDataGetItemData和和GetItemDataPtrGetItemDataPtr o列表框的單項選擇列表框的單項選擇GetCurSelGetCurSel和和SetCurSelSetCurSel、GetTextGetTexto查找列表框查找列表框FindStringFindString和和FindStringExactFindStringExact o刪除列表項刪除列表項DeleteStringDe

47、leteString和和ResetContentResetContent 列表框常見的通知消息列表框常見的通知消息 消息取值 說明 LBN_DBLCLK 字符串列表框中的字符串被雙擊 LBN_ERRSPACE 分配給字符串列表框的內(nèi)存已經(jīng)用完 LBN_KILLFOUCS 字符串列表框失去焦點 LBN_SELCHANGE 在字符串列表框進行的選擇發(fā)生了改變 LBN_SETFOUCS 字符串列表框獲得輸入焦點 5.3.8 5.3.8 組合框組合框o組合框組合框(Combo Box)(Combo Box)結(jié)合了列表框和編輯框控結(jié)合了列表框和編輯框控件的特點,取二者之長,從而完成較為復雜的件的特點,取

48、二者之長,從而完成較為復雜的輸入功能。按照組合框的主要風格特征,可把輸入功能。按照組合框的主要風格特征,可把其分成其分成3 3類:簡單組合框、下拉式組合框和下類:簡單組合框、下拉式組合框和下拉式列表框。拉式列表框。oMFCMFC的的CComboBoxCComboBox類封裝了組合框控件的各種操類封裝了組合框控件的各種操作,組合框的操作可以調(diào)用作,組合框的操作可以調(diào)用CComboBoxCComboBox的成員的成員函數(shù)來實現(xiàn)。函數(shù)來實現(xiàn)。 消息取值 說明 CBN_CLOSEUP 組合框的列表關(guān)閉 CBN_DBLCLK 選擇列表框中的字符串被雙擊 CBN_DROPDOWN 選擇列表框?qū)⒈蝗∠?CB

49、N_EDITCHANGE 選擇列表框中的正文將被修改 CBN_EDITUPDATE 選擇列表框中的正文將被更新 CBN_ERRSPACE 分配給選擇列表框的內(nèi)存已用完 CBN_KILLFOUCS 選擇列表框失去焦點 CBN_SELENDCANCEL 當前選擇項被取消 CBN_SELCHANGE 選擇列表框中的選擇項發(fā)生改變 CBN_SETFOUCS 選擇列表框獲得焦點 常見組合框的通知消息類型常見組合框的通知消息類型 程序的實現(xiàn)過程如下:程序的實現(xiàn)過程如下:(1) (1) 利用利用MFC AppWiardexeMFC AppWiardexe向?qū)?chuàng)建一個基于對話框向?qū)?chuàng)建一個基于對話框的應用程序

50、的應用程序MyComboboxMyCombobox。(2) (2) 添加控件和關(guān)聯(lián)的成員變量添加控件和關(guān)聯(lián)的成員變量為對話框添加的控件和關(guān)聯(lián)的成員變量如表所示。為對話框添加的控件和關(guān)聯(lián)的成員變量如表所示。 控件名稱 ID 值 Caption 成員變量 靜態(tài)文本 IDC_STATIC 服務器位于 組合框 IDC_ROOMCOMBO CComboBox m_Room 按鈕 IDC_EXITBUTTON 退出 添加的控件和關(guān)聯(lián)的成員變量添加的控件和關(guān)聯(lián)的成員變量 5.3.9 5.3.9 滾動條滾動條o滾動條滾動條(Scroll Bar)(Scroll Bar)是一個獨立的窗口,雖然是一個獨立的窗口,

51、雖然它具有直接的輸入焦點,但卻不能自動地滾動它具有直接的輸入焦點,但卻不能自動地滾動窗口的內(nèi)容。窗口的內(nèi)容。o滾動條可分為水平滾動條和垂直滾動條兩種,滾動條可分為水平滾動條和垂直滾動條兩種,兩端都有兩個箭頭按鈕,中間有一個可沿滾動兩端都有兩個箭頭按鈕,中間有一個可沿滾動條方向移動的滾動塊。滾動條控件的各種操作條方向移動的滾動塊。滾動條控件的各種操作封裝在封裝在MFCMFC的的CScrollBarCScrollBar類中。類中。 滾動條的基本操作滾動條的基本操作 o(1 1)設置和獲取滾動條的范圍)設置和獲取滾動條的范圍 滾動條控件的缺省滾動范圍是滾動條控件的缺省滾動范圍是0-00-0,可用,可

52、用CScrollBarCScrollBar類類的成員函數(shù)的成員函數(shù)SetScrollRangeSetScrollRange設置滾動條的滾動范圍。與設置滾動條的滾動范圍。與SetScrollRangeSetScrollRange相應的函數(shù)是相應的函數(shù)是GetScrollRangeGetScrollRange,該函數(shù)獲,該函數(shù)獲取當前滾動條的最小值和最大值。取當前滾動條的最小值和最大值。o(2 2)設置和獲取滾動塊的位置)設置和獲取滾動塊的位置 可用可用CScrollBarCScrollBar類的成員函數(shù)類的成員函數(shù)SetScrollPosSetScrollPos設置滾動塊設置滾動塊的位置。的位置

53、。WM_HSCROLLWM_HSCROLL和和WM_VSCROLLWM_VSCROLL消息消息 通知消息 說明 SB_ENDSCROLL 結(jié)束滾動 SB_LEFT、SB_RIGHT 滾動到最左端或最右端 SB_LINELEFT、SB_LINERIGHT 向左或向右滾動一行(或一個單位) SB_PAGELEFT、SB_PAGERIGHT 向左或向右滾動一頁 SB_THUMBPOSITION 滾動到某絕對位置 SB_TOP、SB_BOTTOM 滾動到最上端或最下端 SB_LINEUP、SB_LINEDOWN 向上或向下滾動一行(或一個單位) SB_PAGEUP、SB_PAGEDOWN 向上或向下滾

54、動一頁 SB_THUMBTRACK 拖動滾動塊 5.4 5.4 公共控件公共控件o5.4.15.4.1旋轉(zhuǎn)按鈕旋轉(zhuǎn)按鈕 o5.4.25.4.2滑塊滑塊o5.4.35.4.3進度條進度條 o5.4.45.4.4標簽控件、屬性表和屬性頁標簽控件、屬性表和屬性頁 o5.4.55.4.5圖像列表圖像列表 o5.4.65.4.6列表視控件列表視控件 o5.4.75.4.7樹視控件樹視控件 .4.1 .4.1 旋轉(zhuǎn)按鈕旋轉(zhuǎn)按鈕o旋轉(zhuǎn)按鈕控件(旋轉(zhuǎn)按鈕控件(SpinSpin)又稱為上下控件()又稱為上下控件(Up Down ControlUp Down Control)或微調(diào)控件或微調(diào)控件 。o主要功能是利

55、用一對標有相反方向箭頭的小按鈕,通過點主要功能是利用一對標有相反方向箭頭的小按鈕,通過點擊它來在一定范圍內(nèi)改變當前的數(shù)值。擊它來在一定范圍內(nèi)改變當前的數(shù)值。o旋轉(zhuǎn)按鈕控制的當前值通常顯示在一個稱為伙伴窗口旋轉(zhuǎn)按鈕控制的當前值通常顯示在一個稱為伙伴窗口(Buddy WindowBuddy Window)的控制中,可以是一個編輯框等。)的控制中,可以是一個編輯框等。o旋轉(zhuǎn)按鈕控件的各種操作封裝在旋轉(zhuǎn)按鈕控件的各種操作封裝在MFCMFC的的CSpinButtonCtrlCSpinButtonCtrl類類中。中。 旋轉(zhuǎn)按鈕控件的基本操作旋轉(zhuǎn)按鈕控件的基本操作 o基數(shù)的設置和獲取基數(shù)的設置和獲取 Set

56、BaseSetBase、GetBaseGetBase o范圍及位置的設置和獲取范圍及位置的設置和獲取SetRangeSetRange或或SetRange32SetRange32、GetRangeGetRange和和GetRange32GetRange32、SetPosSetPos和和GetPosGetPos 旋轉(zhuǎn)按鈕控件的通知消息只有一個:旋轉(zhuǎn)按鈕控件的通知消息只有一個:UDN_DELTAPOSUDN_DELTAPOS,它是當控件的當前數(shù)值將要改變時向其父窗口發(fā)送的。它是當控件的當前數(shù)值將要改變時向其父窗口發(fā)送的。 5.4.2 5.4.2 滑塊滑塊o一個滑塊(也稱為滑動條或游標)是包含一個滑動

57、塊和可一個滑塊(也稱為滑動條或游標)是包含一個滑動塊和可選刻度線的窗口。選刻度線的窗口。o滑塊滑塊(Slider)(Slider)是按照應用程序中指定的增量來移動的。是按照應用程序中指定的增量來移動的。o滑塊控件的各種操作封裝在了滑塊控件的各種操作封裝在了MFCMFC的的CSliderCtrlCSliderCtrl類中類中 ?;瑝K的基本操作滑塊的基本操作 o范圍和位置的設置和獲取范圍和位置的設置和獲取SetRangeSetRange和和SetPosSetPos、SetRangeMaxSetRangeMax和和SetRangeMinSetRangeMin、GetRangeGetRange、Get

58、PosGetPos、GetRangeMaxGetRangeMax和和GetRangeMinGetRangeMin o選擇范圍的設置選擇范圍的設置SetSelectionSetSelection o刻度線尺寸的設置和清除刻度線尺寸的設置和清除SetTicSetTic、SetTicFreqSetTicFreq、ClearTicsClearTics 滑塊的通知消息滑塊的通知消息 oTB_BOTTOMTB_BOTTOM、TB_ENDTRACKTB_ENDTRACK、TB_LINEDOWNTB_LINEDOWN、TB_LINEUPTB_LINEUP、TB_PAGEDOWNTB_PAGEDOWN、TB_P

59、AGEUPTB_PAGEUP、TB_THUMBPOSITIONTB_THUMBPOSITION、TB_THUMBTRACKTB_THUMBTRACK和和TB_TOPTB_TOP 5.4.3 5.4.3 進度條進度條o進度條進度條(Progress)(Progress)主要用來進行數(shù)據(jù)讀寫、文主要用來進行數(shù)據(jù)讀寫、文件拷貝和磁盤格式等操作時的工作進度提示情件拷貝和磁盤格式等操作時的工作進度提示情況,如安裝程序等。況,如安裝程序等。oMFCMFC的的CProgressCtrlCProgressCtrl類封裝了進度條控件的各類封裝了進度條控件的各種操作,種操作,CProgressCtrlCProgr

60、essCtrl類通常僅作為輸出類類通常僅作為輸出類控制??刂?。 進度條的基本操作進度條的基本操作o(1 1)范圍及位置的設置和獲?。┓秶拔恢玫脑O置和獲取 進度條的初始范圍為進度條的初始范圍為0-1000-100,可用成員函數(shù),可用成員函數(shù)SetRangeSetRange或或SetRange32SetRange32來設置進度條控件的范圍,成員函數(shù)來設置進度條控件的范圍,成員函數(shù)SetPosSetPos用用來設置進度條控件的當前位置。與來設置進度條控件的當前位置。與SetPosSetPos函數(shù)相應的函數(shù)函數(shù)相應的函數(shù)是是GetPosGetPos。o(2 2)設置色塊的填充速度)設置色塊的填充速度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論