




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、計算機高級程序設計第五章西南交通大學經(jīng)濟管理學院:何耀琴2對話框的基本概念對話框是一種次要窗體,通常在響應某個命令菜單時彈出。在對話框上可以添加各種通用控件。所有對話框及對話框上的控件都由CWnd類派生而來。因而能對窗體進行的操作也適用于對話框及控件。對話框是一種能包含各類通用控件的特殊窗口,通過添加到其上的控件,對話框可以完成指定的任務。分為兩部分:對話框模板開發(fā)人員可利用對話框模板往對話框上添加控件并進行合理布局。對話框在創(chuàng)建時會收到WM_INITDIALOG的消息,響應該消息的事件處理函數(shù)為OnInitDialog(),其作用是對話框初始化對話框類開發(fā)人員可以為每個對話框定義一個派生CD
2、ialog的新類用來實現(xiàn)為對話框指定的特殊功能西南交通大學經(jīng)濟管理學院:何耀琴35.1 模態(tài)對話框以排他方式工作的對話框。這類對話框出現(xiàn)時,用戶雖然可以看見應用程序的其他對象,但在其關閉之前,輸入焦點不能切換到擁有該對話框的應用程序的其他窗口中去,也就是不能實現(xiàn)同其他對象的交互。在MFC單文檔項目中,可以通過對話框類的成員函數(shù)DoModal()來創(chuàng)建并顯示一個模態(tài)對話框。西南交通大學經(jīng)濟管理學院:何耀琴4創(chuàng)建模態(tài)對話框的流程(1)創(chuàng)建一個MFC單文檔項目,命名為“ModelDialog”(2)切換到“資源視圖”,右鍵單擊“ModelDialog”。右鍵菜單中選擇“添加” “資源” “Dialo
3、g”;(3)選擇“Dialog”,單擊“新建”; 此時屏幕上會出現(xiàn)一個對話框模板;(4)雙擊對話框模板,在“MFC類向導”窗口中為新添加的對話框資源聲明一個派生于CDialog的類CModel;(5)單擊“完成”;西南交通大學經(jīng)濟管理學院:何耀琴5對話框模板西南交通大學經(jīng)濟管理學院:何耀琴6新派生的類基類西南交通大學經(jīng)濟管理學院:何耀琴7創(chuàng)建模態(tài)對話框的流程(續(xù))(6)切換到“解決方案資源管理器”;(7)雙擊打開“ModelDialog.h”,添加 “#include “Model.h”的包含語名;(8)打開“ModelDialog.cpp”文件,找到應用程序類的初始化函數(shù)BOOL CMode
4、lDialogApp:InitInstance(),在初始化函數(shù)中添加創(chuàng)建和顯示模態(tài)對話框的代碼。(見下頁圖);(9)調(diào)試并運行程序。西南交通大學經(jīng)濟管理學院:何耀琴8西南交通大學經(jīng)濟管理學院:何耀琴9說明:成員函數(shù)DoModal() 用來生成一個模態(tài)對話框CPropertySheet:DoModal /所屬的類virtual int DoModal(); /是一個虛函數(shù)返回值: 如果函數(shù)生成成功則返回IDOK或IDCANCEL;否則返回0或-1。如果此屬性表是作為一個向導(參見SetWizardMode)建立的,DoModal返回ID_WIZFINISH或IDCANCEL。 說明: 此成員函
5、數(shù)用來顯示一個模態(tài)對話框。其返回值對應于用來關閉對話框的控件的ID。此函數(shù)返回后,Windows響應這個對話框,所有的屬性頁都會被銷毀。而這些對象本身仍然存在。通常,在DoModal返回IDOK之后可以從CPropertyPage對象檢取數(shù)據(jù)。 西南交通大學經(jīng)濟管理學院:何耀琴105.2 非模態(tài)對話框非排他方式工作的對話框為非模態(tài)對話框。在非模態(tài)對話框出現(xiàn)時,用戶仍然可以實現(xiàn)與應用程序其他對象的交互。要生成一個非模態(tài)對話框,需調(diào)用CDialog類的Create()函數(shù) 和CWnd類的ShowWindow() 函數(shù)來實現(xiàn)。Create()函數(shù)說明如下:Virtural BOOL Create(L
6、PCTSTR lpszTemplateName,CWnd* pParentWnd=NULL);Virtural BOOL Create(UNIT nIDTemplate, CWnd* pParentWnd=NULL);兩種形式中,參數(shù)lpszTemplateName和nIDTemplate分別指明所使用的對話框模板資源的名字和ID值,參數(shù)pParentWnd則指向該對話框的父窗體對象。西南交通大學經(jīng)濟管理學院:何耀琴11ShowWindow()函數(shù)說明如下:BOOL ShowWindow(int nCmdShow);該函數(shù)作用:為窗口設置可見的狀態(tài)。其中參數(shù)nCmdShow的取值規(guī)定了當前窗口
7、將以何種方式被顯示。其取值和含義如下表:nCmdShow可取 值含 義SW_HIDE隱藏窗口,并將活動權交給其他窗體SW_MINIMIZE最小化窗口,并激活位于系統(tǒng)列表最前端的窗體SW_RESTORE激活并顯示窗口SW_SHOW激活窗口,并以當前位置和大小顯示SW_SHOWMAXMIZED激活窗口,并以最大化方式顯示SW_SHOWMINIMIZED激活窗口,并以圖標形式顯示SW_SHOWMINNOACTIVE保持窗口的當前狀態(tài),并以圖標方式顯示SW_SHOWNA令窗口以當前的狀態(tài)顯示SW_SHOWNOACTIVATE保持窗口的當前狀態(tài),并令其以最近的位置和大小顯示SW_SHOWNORMAL激活
8、并顯示窗口,如果窗口被最大化或最小化,Winsows會將其恢復到原始的大小和位置。西南交通大學經(jīng)濟管理學院:何耀琴12創(chuàng)建并顯示一個非模態(tài)對話框的步驟:(1)創(chuàng)建一個MFC單文檔項目,命名為“UnModalDialog”(2)切換到“資源視圖”,右鍵單擊“UnModalDialog”。右鍵菜單中選擇“添加” “資源” “Dialog”;(3)選擇“Dialog”,單擊“新建”, 此時屏幕上會出現(xiàn)一個對話框模板;(4)雙擊對話框模板,在“MFC類向導”窗口中為新添加的對話框資源聲明一個派生于CDialog的類CUnModel;(5)單擊“完成”;(6)切換到“解決方案資源管理器”;(7)雙擊打開
9、“UnModalDialog.h”,添加包含對話框頭文件的語句#include “UnModel.h” ; 并在此文件的class CUnModalDialogApp : public CWinApp下的public中添加成員說明語句:CUnModel *dlg;西南交通大學經(jīng)濟管理學院:何耀琴13添加的包含語句添加的說明語句西南交通大學經(jīng)濟管理學院:何耀琴14(8)雙擊打開“UnModelDialog.cpp”文件,在CUnModalDialogApp:CUnModalDialogApp()函數(shù)中添加對dlg初始化的語句: dlg=NULL;添加代碼西南交通大學經(jīng)濟管理學院:何耀琴15(9)
10、找到應用程序類的初始化函數(shù)BOOL CUnModelDialogApp:InitInstance(),在初始化函數(shù)中添加創(chuàng)建和顯示非模態(tài)對話框的代碼。(見下頁圖); /此處代碼省略,下面是添加的代碼西南交通大學經(jīng)濟管理學院:何耀琴16 /此處代碼省略 /下面方框內(nèi)是添加的代碼,注意添加位置西南交通大學經(jīng)濟管理學院:何耀琴17(10)調(diào)試運行結果,可看出當非模態(tài)Dialog對話框出現(xiàn)時,其它對話框仍然可以操作。西南交通大學經(jīng)濟管理學院:何耀琴185.3 圖形界面“圖形界面”GUI(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用
11、戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。 GUI(圖形界面)提供給用戶以鼠標點擊按鈕方式進行操作,很直觀。過去DOS環(huán)境下只能輸入命令的界面叫CLI (Command line User Interface ) ,稱為命令行模式用戶界面。 GUI常讀做“goo-ee” 。GUI 設計需結合計算機科學、美學、心理學、行為學及實際應用領域需求分析,強調(diào)人機環(huán)境三者作為一個系統(tǒng)進行總體設計。 圖形界面設計的目的是優(yōu)化產(chǎn)品的性能,使操作更人性化,減輕使用者的認知負擔。 有了GUI,極大地方便了非專業(yè)用戶的使用。人們從此不再需要死記硬背大量的命令,取而代之的是通
12、過窗口、菜單、按鍵等方式來方便地進行操作。西南交通大學經(jīng)濟管理學院:何耀琴19GUI的組成 桌面:桌面是界面中最底層,有時也指包括窗口、文件瀏覽器在內(nèi)的“桌面環(huán)境”。在桌面上由于可以重疊顯示窗口,因此可以實現(xiàn)多任務化。桌面與既存的文件夾構成里面相違背,所以要以特殊位置的文件夾的參照形式來定義內(nèi)容。比如在微軟公司的Windows XP系統(tǒng)中,各種用戶的桌面內(nèi)容實際保存在系統(tǒng)盤(默認為C盤):Documents and Settings用戶名桌面 文件夾里。 墻紙:即桌面背景。可以設置為各種圖片和各種附件,成為視覺美觀的重要因素之一。 視窗/窗體/窗口:應用程序為使用數(shù)據(jù)而在圖形用戶界面中設置的基
13、本單元。用戶可以在窗口中操作應用程序,進行數(shù)據(jù)的管理、生成和編輯。通常在窗口四周設有菜單、圖標,數(shù)據(jù)放在中央。 根據(jù)各種數(shù)據(jù)/應用程序的內(nèi)容,窗口設有標題欄,并設有最大化、最小化(隱藏窗口,并非消除數(shù)據(jù))、最前面、縮進(僅顯示標題欄)等動作按鈕。 單一文件界面:在窗口中,一個數(shù)據(jù)在一個窗口內(nèi)完成的方式。在這種情況下,數(shù)據(jù)和顯示窗口的數(shù)量是一樣的。若要在其他應用程序的窗口使用數(shù)據(jù),將相應生成新的窗口。因此窗口數(shù)量多,管理復雜。 多文件界面:在一個窗口之內(nèi)進行多個數(shù)據(jù)管理的方式。這種情況下,窗口的管理簡單化,但是操作變?yōu)殡p重管理。西南交通大學經(jīng)濟管理學院:何耀琴20GUI的組成標簽:多文件界面的數(shù)
14、據(jù)管理方式中使用的一種界面,將數(shù)據(jù)的標題在窗口中并排,通過選擇標簽標題顯示必要的數(shù)據(jù),這樣使得接入數(shù)據(jù)方式變得更為便捷。 上述中,多文件界面主要是微軟視窗系統(tǒng)采用。而在其他環(huán)境中,通常多是單文件界面,所以無所謂單一/多文件界面的稱呼問題。 菜單:將系統(tǒng)可以執(zhí)行的命令以階層的方式顯示出來的一個界面。一般置于畫面的最上方或者最下方,應用程序能使用的所有命令幾乎全部都能放入。重要程度一般是從左到右,越往右重要度越低。命定的層次根據(jù)應用程序的不同而不同,一般重視文件的操作、編輯功能,因此放在最左邊,然后往右有各種設置等操作,最右邊往往設有幫助。一般使用鼠標的第一按鈕進行操作。 即時菜單:又稱功能表。與
15、應用程序準備好的層次菜單不同,在菜單欄以外的地方,通過鼠標的第二按鈕調(diào)出的菜單稱為“即時菜單”。根據(jù)調(diào)出位置的不同,菜單內(nèi)容即時變化,列出所指示的對象目前可以進行的操作。 圖標:顯示在管理數(shù)據(jù)的應用程序中的數(shù)據(jù),或者顯示應用程序本身。 數(shù)據(jù)管理程序:即在文件夾中用戶數(shù)據(jù)的管理、進行特定數(shù)據(jù)管理的程序的情況下,數(shù)據(jù)通過圖標顯示出來。通常情況下顯示的是數(shù)據(jù)的內(nèi)容或者與數(shù)據(jù)相關聯(lián)的應用程序的圖案。另外,點擊數(shù)據(jù)的圖標,一般可以之間完成啟動相關應用程序以后再顯示數(shù)據(jù)本身這兩個步驟的工作。 應用程序的圖標:只能用于啟動應用程序。 按鈕:菜單中,利用程度高的命令用圖形表示出來,配置在應用程序中,成為按鈕。
16、應用程序中的按鈕,通常可以代替菜單。一些使用程度高的命令,不必通過菜單一層層翻動才能調(diào)出,極大提高了工作效率。但是,各種用戶使用的命令頻率是不一樣的,因此這種配置一般都是可以由用戶自定義編輯。 西南交通大學經(jīng)濟管理學院:何耀琴21GUI 應用領域和賽事 手機通訊移動產(chǎn)品 電腦操作平臺 軟件產(chǎn)品 PDA產(chǎn)品 數(shù)碼產(chǎn)品 車載系統(tǒng)產(chǎn)品 智能家電產(chǎn)品 游戲產(chǎn)品 產(chǎn)品的在線推廣 國際性競賽國際上每兩年舉行一次GUI錦標賽的的界面競賽。“圖形用戶界面大獎賽” 前身是“圖形用戶界面奧林匹克”,五大IT社區(qū)聯(lián)合主辦,屬于微軟認證的金牌合作計劃。2008年大賽共有世界各國 26 個團隊參加,參與 9 個項目,爭
17、奪共計一萬二千美元的獎金(包括 X-Box 360、Nvidia 顯卡在內(nèi)的實物獎品)。比賽集中在桌面背景(Wallpaper)、桌面圖標(Icon)、桌面主題(Visual Style)三個方面,而比賽項目的類型則分為“最實用”(Most Usable)、“最具原創(chuàng)性”(Most Original)、“綜合最佳”(Best Overall)。 2008GUI錦標賽我國獲獎情況 我國設計師獲得了1金3銀3銅的好成績。 我國設計師iconboy的作品Non-Mainstream2008 獲得了綜合最佳桌面圖標獎二等獎(Best Overall Icon Package Winners 2nd P
18、lace)最實用桌面圖標獎二等獎(Most Usable Icon Package Winners 2nd Place)。 西南交通大學經(jīng)濟管理學院:何耀琴22控件特指程序運行時有一個圖形化表示的組件,它可以被添加到窗體或對話框上以實現(xiàn)人機交互。如字體選擇下拉框、工具欄、滾動條、狀態(tài)欄 Windows窗體是一種用于創(chuàng)建程序的GUI。窗體可以是一個對話框、SDI窗口、MDI窗口。控件名稱對應的MFC類靜態(tài)控件CStatic下壓控件CButton單選按鈕CButton復選框CButton編輯框控件CEdit列表框控件CListBox組合框控件CComboBox滾動條控件CScrollBar列表控件
19、CListCtrlTab控件CTabCtrl5.4 常用控件VC+中工具箱內(nèi)有多種類型的控件和組件。在MFC中,每一種控件都有其對應的MFC控件類,而所有的控件類都派生于CWnd類,通過控件類開發(fā)人員可以很容易地實現(xiàn)對控件的控制和對控件事件和處理。MFC中所包含的控件類如表中所示。西南交通大學經(jīng)濟管理學院:何耀琴23使用控件的步驟(1)準備對話框:對話框相當于控件的容器(2)添加控件:從工具箱中將控件添加到對話框上;(3)設置控件的屬性。通過屬性可以定義控件的名稱、樣式、大小、位置、字體顏色等。(4)映射控制變量或對象:在程序中,控件必須映射為一個值變量(value)或控件對象(control
20、)。這樣程序運行時就可以象控制變量一樣控制控件了。例如一個文本編輯框可以映射為CString值或CEdit對象, CString是一個字符串,而CEdit是MFC為文本編輯框專門準備的控件類。(5)編寫響應控件事件函數(shù):控件都是有事件的,如按下鼠標左鍵或右鍵,或選擇“確定”或“取消”等。應編制好響應函數(shù)。(6)調(diào)用控件方法:既然控件可以映射成對象變量,就可以用調(diào)用其成員函數(shù)(或方法,method)來完成特定的功能 。西南交通大學經(jīng)濟管理學院:何耀琴24案例:靜態(tài)控件的使用靜態(tài)控件包括靜態(tài)文本控件和靜態(tài)picture控件兩種,用于顯示要在對話框中出現(xiàn)的文本和圖片。往對話框中添加靜態(tài)控件時,控件的
21、所有ID都被自動設置成IDC_STATIC,因此,如果要為靜態(tài)控件添加控制變量或事件處理函數(shù),必須重新指定一個唯一的ID值。修改ID值可在靜態(tài)控件的“屬性”窗口中進行。使用靜態(tài)控件的流程: (1)創(chuàng)建一個單文檔工程StaticControl并添加對話框; (2)創(chuàng)建一個非模態(tài)對話框并添加靜態(tài)控件并設置靜態(tài)文本控件及靜態(tài)picture控件的屬性,為控件映射控制變量。 (3)重載對話框類的OnInitDialog()函數(shù),在函數(shù)中為picture控件加載位圖。西南交通大學經(jīng)濟管理學院:何耀琴25具體步驟:(1)創(chuàng)建一個單文檔工程StaticControl;(2)在資源視圖中用右鍵菜單“添加”“資源
22、”向MFC工程中添加一個對話框資源,屏幕上會出現(xiàn)對話框模板;(3)雙擊對話框模板,定義一個派生類“CMyDialog”;(4)返回“解決方案資源管理器”窗口,雙擊打開主頭文件“”,添加包含定義對話框的頭文件的語句“#include ”“ ”,并定義一個指針對象CMyDialog *dlg; 見圖所示。西南交通大學經(jīng)濟管理學院:何耀琴26定義指針變量添加包含語句西南交通大學經(jīng)濟管理學院:何耀琴27(4)雙擊打開應用程序“”,在初始化函數(shù)“BOOL CStaticControlApp:InitInstance()”中找到下面位置后添加語句。 完成非模態(tài)對話框的創(chuàng)建。見下圖所示。添加西南交通大學經(jīng)濟
23、管理學院:何耀琴28 (5)切換到資源視圖,右擊工程項目名“StaticControl” “添加” “資源”,向單文檔工程中導入一個位圖資源Bitmap并新建一個Dialog資源?,這個位圖資源可以是事先放好在某個文件中的位圖文件。這里導入了一個襯衣.bmp位圖。如圖所示。西南交通大學經(jīng)濟管理學院:何耀琴29西南交通大學經(jīng)濟管理學院:何耀琴30(6)展開資源視圖樹形結構,雙擊新添加的類模板IDD_DIALOG1,打開Dialog模板。西南交通大學經(jīng)濟管理學院:何耀琴31(7)從工具箱中向對話框模板添加一個靜態(tài)文本框控件StaticText 和 一個Pictrue Control 控件,見圖所示
24、。(8)選擇“視圖” “其他窗口” “屬性窗口”,打開屬性窗口。西南交通大學經(jīng)濟管理學院:何耀琴32(9)選擇“靜態(tài)文本”框,在“靜態(tài)文本”框的“Caption”屬性中,將“Caption”的值“靜態(tài)”改為“在靜態(tài)控件picture中顯示一幅位圖”。(10)選中picture控件,由于所有靜態(tài)變量控件的ID都被設置成了IDC_STATIC,因此,如果要為靜態(tài)控件添加控制變量或事件處理函數(shù),必須修改ID值。可在靜態(tài)控件的“屬性”窗口中進行修改。(11)這里將其ID值修改為“IDC_STATIC1”,將其“Type”屬性值選擇修改為“Bitmap”,即位圖。西南交通大學經(jīng)濟管理學院:何耀琴33(1
25、2)右鍵單擊Picture控件,選擇“添加變量”。(13)通過添加成員變量向導對話框,Picture控件,選擇“添加變量”,為Picture控件添加一個控制變量m_picture。單擊“完成”。在頭文件中,可看到對m_picture的定義。西南交通大學經(jīng)濟管理學院:何耀琴34(14)用鼠標單擊類的聲明“class CMyDialog : public CDialog”中的 CMyDialog,并單擊右邊屬性窗口中的“重寫”按鈕,在下面的列表中找到OnInitDialog并單擊右邊下拉菜單選擇添加OnInitDialog()函數(shù)。操作后馬上可看到頭文件中出現(xiàn)了函數(shù)的聲明語句。(15)在頭文件中定
26、義一個CBitmap類對象bitmap;定義對象西南交通大學經(jīng)濟管理學院:何耀琴35(16)在的OnInitDialog()函數(shù)中,為picture控件添加加載位圖的語句。添加的語句西南交通大學經(jīng)濟管理學院:何耀琴36(17)單擊“啟動調(diào)試”按鈕運行程序。可以看到在對話框中,靜態(tài)文本框顯示了我們給出的一段文字,而picture控件則顯示了我們加載的一幅位圖圖片。西南交通大學經(jīng)濟管理學院:何耀琴37歸納控件可以通過5個部分進行描述: 1. ID(控件的標識,用于在程序中調(diào)用控件) 2. 控件實體(添加到對話框中的圖形) 3. 控件變量() 4. 屬性函數(shù) 5. 消息函數(shù) MFC中關聯(lián)一個控件和變量的時候,可以選擇是控件方式還是值方式,如果是控件方式,那么就是這個變量就代表了控件,如果是值方式,那么這個變量就代表了控件中顯示的值。比如你說的靜態(tài)控件,可以與CStatic類型的變量關聯(lián),也可以與CString類型的變量關聯(lián)。 所謂的關聯(lián),只是MFC的一層封裝而已,內(nèi)部還是采用Windows SDK來操作的。西南交通大學經(jīng)濟管理學院:何耀琴38可添加到項目中的資源Accelerator:快捷鍵Bitmap:位圖Cur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織品檢驗員考試能力評估試題及答案
- 推理與判斷課件
- 培養(yǎng)國際競爭力人才的策略與實施路徑分析
- 老舊小區(qū)改造與設施提升項目可行性分析
- 低空經(jīng)濟產(chǎn)業(yè)園建設引領未來發(fā)展
- 2024年設計師考試刷新試題及答案
- 充裕人生測試題及答案
- 村醫(yī)婦幼知識試題及答案
- 大公司oracle試題及答案
- 商業(yè)美術設計師考試中的形勢與試題答案
- 偵探推理題(含答案)
- 熱塑性聚酯彈性體(TPEE)
- 畢業(yè)論文機電一體化發(fā)展歷程及其面臨的形勢和任務
- 家具廠首件檢驗記錄表
- 《中小學綜合實踐活動課程指導綱要》教育部2022版
- 太上碧落洞天慈航靈感度世寶懺
- 國家標準硬度轉換表參考模板
- 輪胎式裝載機檢測報告(共5頁)
- 彎矩二次分配法excel表-(1)
- 半導體分立器件制造公司績效制度范文
- 鐵板神數(shù)詳細取數(shù)法(共16頁)
評論
0/150
提交評論