版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、對話框和Windows標準控件 l對話框的組成與分類l創(chuàng)建對話框l模式對話框的編程l通用對話框lWindows 標準控件4.1 對話框的組成與分類對話框:是Windows應用程序與用戶打交道的界面元素 。一、對話框的組成1、對話框模板對話框模板定義了對話框的特性(比如大小、位置和風格)以及對話框中每個控件的類型和位置。 2、對話框類從CDialog類派生的對話框類提供編程接口來管理對話框 。4.1 對話框的組成與分類二、對話框的分類1、模式(Modal)對話框; 在對話框關閉之前,用戶無法在同一應用程序的其他地方進行工作,例如打開文件對話框。2、無模式(Modaless)對話框。在它仍然保留在
2、屏幕的同時,用戶還可以在同一應用程序的其他窗口中進行工作,例如查找對話框。 4.2 創(chuàng)建對話框一、創(chuàng)建對話框模板可以使用對話框編輯器來創(chuàng)建包含不同控件的對話框模板,在對話框編輯器中,可以調整對話框顯示時的大小和位置,從Controls工具欄拖放各種類型的控件到對話框中,用Dialog工具欄調整控件的位置,測試對話框的外觀和行為。可以使用菜單方式:Insert|Resource打開Insert Resource對話框,選中Dialog后單擊New按鈕即可打開對話框編輯器。或者使用項目的ResourceView,找到Dialog資源,右擊后選擇Insert Dialog也可打開對話框編輯器。對話框
3、編輯器 (a) 對話框模板 (b) Controls工具欄 (c) Dialog工具欄對話框和Windows標準控件 l對話框的組成與分類l創(chuàng)建對話框l模式對話框的編程l通用對話框lWindows 標準控件4.2 創(chuàng)建對話框二、創(chuàng)建對話框類在創(chuàng)建了對話框模板后,就可以利用ClassWisard來創(chuàng)建從CDialog派生且連接到對話框模板的對話框類。 (1) 創(chuàng)建了一個連接到對話框模板CDialog類的派生類。(2) 利用ClassWizard向對話框類加入數據成員來表示對話框中的控件。(3) 指定控件和成員變量之間如何交換數據。(4) 映射Windows消息到對話框類,如鼠標左鍵單擊消息。(5
4、) 利用ClassWizard為對話框中的按鈕和其他可以產生事件的控件加入相應的消息控件函數。(6) 為各種事件處理函數編輯代碼,以能夠完成指定的工作。4.2 創(chuàng)建對話框二、創(chuàng)建對話框類對話框上的許多控件還需要進行初始化工作,從而使得對話框被顯示時這些控件具有相應類型的初值。對話框的初始化工作可以使用以下3種方法來進行。(1) 在構造函數中初始化(2) WM_CREATE初始化(3) WM_INITDIALOG初始化對于對話框的初始化工作通常都在響應該消息時進行 。對話框和Windows標準控件 l對話框的組成與分類l創(chuàng)建對話框l模式對話框的編程l通用對話框lWindows 標準控件4.3模式
5、對話框編程對于模式對話框的編程可以按以下步驟進行。(1) 根據要求創(chuàng)建對話框模板。(2) 使用ClassWizard創(chuàng)建對話框類并進行各類事件函數的代碼編寫。(3) 對視圖類進行編輯,以便對話框能夠被激活。在所編寫的代碼中,首先創(chuàng)建對話框類的對象,然 后 通 過 該 對 象 調 用 對 話 框 類 成 員 函 數DoModal()。只有當用戶退出對話框窗口時,DoModal函數才能返回。4.3模式對話框編程【例4.1】 簡單模式對話框的編程。本程序的功能是在客戶區(qū)顯示一個可由用戶指定填充顏色的矩形。當菜單項【顏色設置】被選中時將調出【顏色】對話框,在其中用戶可以確定RGB三顏色的值,單擊【確定
6、】按鈕后即可改變矩形的填充色。實現步驟程序的步驟如下。(1) 使用對話框編輯器創(chuàng)建對話框模板,最終完成的對話框界面如圖所示??丶蘒DCaption靜態(tài)控件IDC_STATIC1R(0-255)靜態(tài)控件IDC_STATIC2G(0-255)靜態(tài)控件IDC_STATIC3B(0-255)編輯框 IDC_R編輯框 IDC_G編輯框 IDC_B實現步驟( 2 ) 使 用 C l a s s W i z a r d 創(chuàng) 建 對 話 框 類CMyColorDialog。在ClassWisard中選取屬性表Member Variables后,為控件IDC_R、IDC_G和IDC_B分別映射int類型成員變量
7、m_nR、m_nG和m_nB。在ClassWisard中選取屬性表Message Maps,為CMyColorDialog的消息WM_INITDIALOG映射函數OnInitDialog(),并單擊Edit Code按鈕為OnInitDialog函數編寫初始化代碼。實現步驟BOOL CMyColorDialog:OnInitDialog() CDialog:OnInitDialog();m_nR=0;m_nG=0;m_nR=0;UpdateData(FALSE); /將設定的變量值傳送給對應的控件 return TRUE; 實現步驟(3) 對視圖類進行編輯,以能激活對話框,并進行繪圖。l首先要
8、使用ResourceView中的菜單編輯器來創(chuàng)建菜單項“顏色設置”。l在創(chuàng)建了菜單項后,可通過ClassWizard為該菜單項映射菜單消息。 l在視圖中需要生成一個該類的對象。記得包含頭文件 l在為菜單項顏色設置映射的消息中,寫如下代碼dlg.DoModal(); Invalidate(); 實現步驟l編輯視圖類中的OnDraw,進行繪圖void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rect;GetClientRect(rect); Cbrush brush; brush.C
9、reateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB); pDC-SelectObject(&brush); pDC-Rectangle(100,100,200,300);對話框和Windows標準控件 l對話框的組成與分類l創(chuàng)建對話框l模式對話框的編程l通用對話框lWindows 標準控件4.4 Windows通用對話框 Windows提供了一組標準用戶界面對話框,它們都由MFC庫中相應的類來支持??梢允褂猛ㄓ脤υ捒騺韴?zhí)行各種標準操作,如選擇文件、指定字體和選擇顏色等。MFC提供了6類標準的對話框 ,這些對話框有一個共同的特點:它們都從用戶處獲
10、取信息,但它們并不對信息作處理。 4.4 Windows通用對話框通用對話框說 明CFileDialog封裝了標準的“打開”和“另存為”對話框CColorDialog封裝了標準的“顏色”對話框CFontDialog封裝了標準的“字體”對話框CFindReplaceDialog封裝了標準的“查找”和“替換”對話框CPrintDialog封裝了標準的“打印”和“打印設置”對話框CPageSetupDialog封裝了標準的“頁面設置”對話框4.4 Windows通用對話框4.4.1 CFileDialog類(1) 構造CFileDialog類的對象。 CFileDialog(BOOL bOpenFi
11、leDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter=NULL,CWnd *pParentWnd=NULL) 4.4.1CFileDialog類參數bOpenFileDialog是一個標記位,其值如果為TRUE,那么將構造【打開】對話框;如果值為FALSE,那么將構造“另存為”對話框。參數lpszDefExt為默認的文件擴展名。如果用戶沒有在文件名編輯框中輸入擴展名,則由lpszDefExt所
12、指定的擴展名將自動附加在文件名后。參數lpszFileName是出現在文件名編輯框中的初始文件名。如果該參數的值為NULL,則不顯示初始文件名。參 數 d w F l a g s 由 一 個 或 多 個 標 志 組 成 。 其 中OFN_HIDEREADONLY將隱藏只讀文件,OFN_ALLOWMULTISELECT將允許在選擇時與Shift鍵或Ctrl鍵配合以選擇多個文件。4.4.1 CFileDialog類參數lpszFilter指定文件過濾器,用于確定顯示在文件列表中的文件類型。每個過濾器都是一個字符串對,第一個字符串描述過濾器,第二個字符串是用戶過濾文件的擴展名,多個擴展名要用分號(;
13、)作為分界符,兩個字符串之間用管道符號(|)分隔。整個字符串以兩個管道符(|)和一個NULL字符結束,可以用CString對象值作為該參數的值。例如,以下字符串就是一個描述只在文件列表框中顯示文本文件(*.txt)和Microsoft文件(*.doc)的過濾器。4.4.1 CFileDialog類CFileDialog dlg(TRUE,bmp,*.bmp, OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|); 4.4.1 CFileDialog類(2) 調用成員函數DoModal()可以將
14、對話框顯示在屏幕上,并讓用戶從中選擇文件。(3) 如果DoModal()返回的是IDOK,那么調用成員函數可以獲取文件信息。4.4.1CFileDialog類的成員函數功能說明GetPathName獲取當前所選文件的全路徑GetFileName獲取當前所選文件的文件名GetFileExt獲取當前所選文件的文件擴展名GetFileTitle獲取當前所選文件的標題GetNextPathName獲取所選擇的下一個文件的全路徑GetStartPosition得到文件列表的第一個元素的位置4.4.2 CColorDialogCColorDialog類提供了可以選擇顏色的對話框,使得用戶可以從顏色列表中選
15、擇要用的顏色。對該類的使用可按下列步驟進行。(1) 在視圖類相應位置構造CColorDialog對象。(2) 設置或修改成員變量m_cc來初始化對話框。m_cc的結構類型為CHOOSECOLOR。(3) 調用成員函數DoModal來顯示對話框并讓用戶從中選擇顏色。(4) 如果DoModal返回的是IDOK,那么用戶所做的顏色選擇將保存在m_cc中。通過使用該類的成員函數GetColor即可得到選擇顏色的RGB值。4.4.2 CColorDialog4.4.3 CFontDialog類CFontDialog類封裝了標準的【字體】對話框,使得用戶可以從系統(tǒng)安裝的字體列表中選擇要用的字體。CFont
16、Dialog類的使用步驟與CColorDialog的使用過程是一樣的,在用戶選擇了字體后,成員函數獲取所選擇的字體信息。4.4.3 CFontDialog類類的成員函數功能說明GetCurrentFont獲取當前所選字體GetFaceName獲取當前所選字體的字樣名GetStyleName獲取當前所選字體的風格名GetSize獲取當前所選字體的大小GetColor獲取當前所選字體的顏色GetWeight獲取當前所選字體的磅數IsStrikeOut確定字體是否帶有刪除線IsUnderline確定字體是否帶有下劃線IsBold確定字體是否為粗體IsItalic確定字體是否為斜體4.4.4 其它通用
17、對話框CFindReplaceDialog類封裝了通用的【查找】和【替換】對話框。對話框僅僅提供了標準接口,它允許輸入待查找和替換的字符串,而真正的查找和替換功能則需要程序員自己實現。與其他通用對話框不同的是,【查找】和【替換】對話框是非模式的。因此,對該類的使用要按照非模式對話框進行。4.4.4 其它通用對話框CPrintDialog類封裝了標準的【打印】和【打印預覽】對話框。該對話框是模式對話框,它的使用過程與CColorDialog一樣,只是在成員函數上有所不同。CPageSetupDialog類封裝了標準的【頁面設置】對話框,使得用戶可以設置和修改打印邊距等。其使用過程與CColorD
18、ialog類似,在使用時可利用Visual C+的提示功能來學習和掌握其成員函數。對話框和Windows標準控件 l對話框的組成與分類l創(chuàng)建對話框l模式對話框的編程l通用對話框lWindows 標準控件4.5 Windows標準控件控件(Control)是一種子窗口,應用程序用它來與其他窗口進行簡單的輸入輸出操作。作為一般窗口,控件具有許多通用的窗口屬性,并且可以使用ShowWindow、MoveWindow等窗口管理函數來顯示或隱藏控件、改變控件的位置以及其他操作。本節(jié)主要介紹標準的Windows控件的編程方法及一些常用的公共控件的使用方法。4.5.1 標準Windows控件標準Window
19、s控件包括(1)靜態(tài)控件(2)按鈕控件(3)編輯框控件(4)列表框控件(5)組合框控件(6)滾動條控件 4.5.1 Windows 標準控件1靜態(tài)文本控件(CStatic) 靜態(tài)文本控件是靜態(tài)控件的一種,只是簡單地在屏幕上顯示一字符串,在運行過程中它不和用戶發(fā)生任何關系。當把矩形范圍定好位之后,就可以直接輸入文本。該控件的一個常用屬性是Caption屬性,用來在控件中顯示文本。該控件一般不響應消息。靜態(tài)文本控件一般是配合無Caption屬性的控件使用的。4.5.1 Windows 標準控件2編輯框控件(CEdit) 編輯框控件是一個讓用戶從鍵盤輸入和編輯文字的矩形窗口,用戶可以通過它,很方便地
20、輸入各種文字、數字或者口令,也可使用它來編輯或修改簡單的文本文件。編輯框控件的風格可在其屬性對話框中設置,如圖4.9所示。如果要使編輯框控件具有輸入口令功能,則可選擇Password選項。如果要鎖定編輯框,即在運行時不能進行編輯,則可設置Read-only選項。若使該編輯框只能輸入數字,則可設置Number選項。若使該控件可輸入多行文本且可接收回車,則設置Multiline和Want return選項。4.5.1 Windows 標準控件編輯框控件可接收很多消息,常用的是EN_CHANGE消息與EN_SETFOCUS消息,其中前者是當用戶修改了編輯框中的文本時發(fā)出的,后者則是在該控件接收到輸入
21、焦點時發(fā)送的。封裝編輯框控件的類是CEdit類,它有很多成員函數,可以方便程序員進行編輯工作 4.5.1 Windows 標準控件成員函數說 明GetSel獲取編輯框中當前選擇的起始字符和終止字符位置ReplaceSel用指定文本替換編輯框中的當前選擇SetSel選擇編輯框中的一個字符范圍SetReadOnly設置編輯框控件的只讀狀態(tài)GetPasswordChar獲取用戶輸入文本時在編輯框控件內顯示的口令字符SetPasswordChar設置或刪除當用戶輸入文本時在編輯框控件中顯示的口令字符Undo取消上一次編輯框控件操作Clear清除編輯框控件內的當前選擇Copy將編輯框控件中的當前選擇復制
22、到剪貼板中Paste將數據從剪貼板復制到編輯框控件中的當前光標處GetLine從編輯框控件中獲取一行文本4.5.1 Windows 標準控件3按鈕控件(CButton) Windows中所用的按鈕是隨處可見的,常見的按鈕有3種類型:按鍵按鈕、單選按鈕和復選框。按鍵按鈕通??梢粤⒓串a生某個動作,執(zhí)行某個命令,因此也常被稱為命令按鈕。單選按鈕的外觀是一個圓圈,當它被選中時,單選按鈕中就標上一個黑點。復選框的外觀是一個空心方框,當它被選中時,復選框中就加上一個“X”標記,通常復選框只有選中和沒選中兩種狀態(tài)。CButton類封裝了按鈕控件的功能。 4.5.1 Windows 標準控件對于按鍵按鈕的使用
23、主要是映射BN_CLICKED單擊事件和BN_DOUBLECLICK雙擊事件。對于單選按鈕的使用往往是使用一組按鈕,比如表示性別的“男”、“女”都可以使用單選按鈕。為了表示這兩個單選按鈕是一組,必須將本組中第1個按鈕的Group屬性選中,并為設定Group屬性的按鈕在ClassWizard中映射成員變量。運行時如果該變量值為0,則選中第1個按鈕,若為1則選中的是第2個按鈕,依次類推。在使用復選框時,要為每一個復選框映射一個變量,變量的類型為BOOL類型,在運行時,如果某個復選框被選中,則對應變量的值為TRUE,反之為FALSE。4.5.1 Windows 標準控件4列表框控件(CListBox
24、) 列表框控件是一個放有用戶可以選擇對象項的列表的控件窗口,可以讓用戶在其中選擇一個或多個項。 列表框控件默認情況下只能進行單選操作,若要使列表框能進行多項選擇,則需要修改其屬性中Style下的Selection屬性。該屬性值若為Simple,就只能進行單選;若為Multiple,則可直接使用Multiple進行多選;若為Extended,則可配合Shift和Ctrl鍵進行多選。4.5.1 Windows 標準控件成員函數功 能AddString在列表框中增加一個串DeleteString在列表框中刪除一個串InsertString在列表框中指定位置插入一個串ResetContent清除列表框
25、中所有列表項FindString在列表框中查找一個串SetCurSel選擇一列表項GetSel獲取一列表項的選擇狀態(tài)GetCount獲取列表框中列表項的數目GetCurSel獲取列表框中當前所選串的索引(從0開始)GetText獲取某個位置處的字符串值 CListBox類主要成員函數類主要成員函數4.5.1 Windows 標準控件列表框的使用一般可按下述步驟進行操作。(1) 在對話框上放置列表框控件,設置其屬性。(2) 使用ClassWizard為該控件映射CListBox類型的成員變量。(3) 在對話框的OnInitDialog()函數中,使用ClistBox的成員函數AddString(
26、)為控件進行初始化。(4) 若要判斷列表框中被選中的字符串,對單選情況可使用GetCurSel()函數獲得所選項的索引,再利用GetText()函數獲得該索引處的字符串值。若是多選可根據GetCount()函數返回的列表項,從頭使用GetSel()判斷是否被選中,若選中,則再使用GetText()函數即可。下面的代碼段即為在多選列表框中顯示各個被選項的代碼。 4.5.1 Windows 標準控件列表框控件和編輯框控件作為用戶輸入的窗口,各有其優(yōu)點。列表框中可列出用戶所需的選項,用戶不必記住每一項,也不用一字一字輸入。但是當用戶需要的項目未在列表框中列出時,列表框就無能為力了。而編輯框控件則可以
27、根據用戶需求進行靈活輸入,但需要記憶內容,并且需要逐字輸入。如果將這兩個控件結合起來使用,正常情況下用戶可方便地在列表框中進行選擇,如果沒有所需項,則使用編輯框進行輸入,從而出現了組合框這種控件。它結合列表框和編輯框控件的特點,取二者之長,互相彌補其短,從而完成復雜的輸入功能。4.5.1 Windows 標準控件Windows提供3種類型的組合框:簡單組合框、下拉式組合框和下拉式列表框。簡單組合框和下拉式組合框都含有列表框和編輯框控件,但是簡單組合框的列表框不是下拉式的,跟正常的列表框一樣。下拉式列表框則雖然有下拉式的列表,但卻沒有文字編輯功能。下拉式列表框與普通列表框相比,占用的屏幕要少的多,用戶可以根據對話框的布局適當選擇組合框的下拉式列表類型和列表框。如果對話框上要放置能進行選擇的控件,但空間卻不大,可選用下拉式列表框;若對話框上比較空,則可以使用列表框。4.5.1 Windows 標準控件6滾動條控件滾動條是窗口中常見的對象。當窗口客戶區(qū)中要顯示比其自身大的對象時,滾動條便應運而生。這種滾動條與窗口一同創(chuàng)建,位于窗口用戶區(qū)旁的非用戶區(qū),用來擴展用戶區(qū)的顯示范圍,它被稱為標準滾動條。另外還有一種作為控件的滾動條,這是一個獨立的窗口,具有直接的輸入焦點,使用這種滾動條的目的未必在于滾動顯示窗口內容
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝行業(yè)面料設計師培訓心得
- 急診搶救科護士的工作總結
- 造紙行業(yè)工程師工作總結
- 農業(yè)行業(yè)銷售工作總結
- 紡織服裝行業(yè)營業(yè)員工作總結
- 科研行業(yè)前臺工作總結
- 服裝行業(yè)人才招聘實例總結
- 藝術行業(yè)行政后勤工作總結
- 《管教兒女的智慧》課件
- 《心力衰竭護理》課件
- 維修工作流程圖
- Y2-90S-4-三相異步電動機的制作-課程設計報告
- 中式烹調工藝與實訓(第三版) 課件 第10、11章 烹飪美學、菜肴創(chuàng)新
- 物業(yè)投訴處理培訓課件
- 《春秋》導讀學習通章節(jié)答案期末考試題庫2023年
- 1.1、供應商管理控制流程與風險控制流程圖
- 初二年級勞動課教案6篇
- 箱變遷移工程施工方案
- 北師大版九年級數學下冊《圓的對稱性》評課稿
- 《遙感原理與應用》期末考試試卷附答案
- 物流無人機垂直起降場選址與建設規(guī)范(征求意見稿)
評論
0/150
提交評論